{
  "bundles": [
    {
      "@type": "NXBundle",
      "artifactId": "nuxeo-multi-tenant-core",
      "artifactVersion": "10.10",
      "bundleGroup": {
        "@type": "NXBundleGroup",
        "bundleIds": [
          "org.nuxeo.ecm.multi.tenant",
          "org.nuxeo.ecm.multi.tenant.jsf"
        ],
        "hierarchyPath": "/grp:org.nuxeo.multi.tenant/grp:org.nuxeo.ecm.multi",
        "id": "grp:org.nuxeo.ecm.multi",
        "name": "org.nuxeo.ecm.multi",
        "parentIds": [
          "grp:org.nuxeo.multi.tenant"
        ],
        "readmes": [
          {
            "blobProviderId": "default",
            "content": "This module provides multi tenant support through Domain and local configuration.\n\n# Building\n\n    mvn clean install\n\n## Deploying\n\nInstall [the Nuxeo Multi Tenant Marketplace Package](https://connect.nuxeo.com/nuxeo/site/marketplace/package/nuxeo-multi-tenant).\nOr manually copy the built artifacts into `$NUXEO_HOME/templates/custom/bundles/` and activate the \"custom\" template.\n\n## QA results\n\n[![Build Status](https://qa.nuxeo.org/jenkins/buildStatus/icon?job=addons_nuxeo-multi-tenant-master)](https://qa.nuxeo.org/jenkins/job/addons_nuxeo-multi-tenant-master/)\n\n# About Nuxeo\n\nNuxeo dramatically improves how content-based applications are built, managed and deployed, making customers more agile, innovative and successful. Nuxeo provides a next generation, enterprise ready platform for building traditional and cutting-edge content oriented applications. Combining a powerful application development environment with SaaS-based tools and a modular architecture, the Nuxeo Platform and Products provide clear business value to some of the most recognizable brands including Verizon, Electronic Arts, Sharp, FICO, the U.S. Navy, and Boeing. Nuxeo is headquartered in New York and Paris. More information is available at www.nuxeo.com.\n",
            "digest": "63651aa5857f2a64d7aae39045f9bf96",
            "encoding": "UTF-8",
            "length": 1242,
            "mimeType": "text/plain",
            "name": "README.md"
          }
        ],
        "version": "10.10"
      },
      "bundleId": "org.nuxeo.ecm.multi.tenant",
      "components": [
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.core.schema.TypeService--schema",
              "hierarchyPath": "/grp:org.nuxeo.multi.tenant/grp:org.nuxeo.ecm.multi/org.nuxeo.ecm.multi.tenant/org.nuxeo.ecm.multi.tenant.core.types/Contributions/org.nuxeo.ecm.multi.tenant.core.types--schema",
              "id": "org.nuxeo.ecm.multi.tenant.core.types--schema",
              "registrationOrder": 9,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.core.schema.TypeService",
                "name": "org.nuxeo.ecm.core.schema.TypeService",
                "type": "service"
              },
              "version": "10.10",
              "xml": "<extension point=\"schema\" target=\"org.nuxeo.ecm.core.schema.TypeService\">\n    <schema name=\"tenantconfig\" prefix=\"tenantconfig\" src=\"schemas/tenantconfig.xsd\"/>\n\n    <!-- multi tenant vocabulary -->\n    <schema name=\"multitenantvocabulary\" src=\"schemas/multi_tenant_vocabulary.xsd\"/>\n    <schema name=\"multitenantxvocabulary\" src=\"schemas/multi_tenant_xvocabulary.xsd\"/>\n    <schema name=\"multitenantl10nvocabulary\" src=\"schemas/multi_tenant_l10nvocabulary.xsd\"/>\n    <schema name=\"multitenantl10nxvocabulary\" src=\"schemas/multi_tenant_l10nxvocabulary.xsd\"/>\n  </extension>"
            },
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.core.schema.TypeService--doctype",
              "hierarchyPath": "/grp:org.nuxeo.multi.tenant/grp:org.nuxeo.ecm.multi/org.nuxeo.ecm.multi.tenant/org.nuxeo.ecm.multi.tenant.core.types/Contributions/org.nuxeo.ecm.multi.tenant.core.types--doctype",
              "id": "org.nuxeo.ecm.multi.tenant.core.types--doctype",
              "registrationOrder": 10,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.core.schema.TypeService",
                "name": "org.nuxeo.ecm.core.schema.TypeService",
                "type": "service"
              },
              "version": "10.10",
              "xml": "<extension point=\"doctype\" target=\"org.nuxeo.ecm.core.schema.TypeService\">\n    <facet name=\"TenantConfig\">\n      <schema name=\"tenantconfig\"/>\n    </facet>\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.multi.tenant/grp:org.nuxeo.ecm.multi/org.nuxeo.ecm.multi.tenant/org.nuxeo.ecm.multi.tenant.core.types",
          "name": "org.nuxeo.ecm.multi.tenant.core.types",
          "requirements": [],
          "resolutionOrder": 239,
          "services": [],
          "startOrder": 245,
          "version": "10.10",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.multi.tenant.core.types\">\n\n  <extension target=\"org.nuxeo.ecm.core.schema.TypeService\"\n      point=\"schema\">\n    <schema name=\"tenantconfig\" prefix=\"tenantconfig\" src=\"schemas/tenantconfig.xsd\"/>\n\n    <!-- multi tenant vocabulary -->\n    <schema name=\"multitenantvocabulary\" src=\"schemas/multi_tenant_vocabulary.xsd\"/>\n    <schema name=\"multitenantxvocabulary\" src=\"schemas/multi_tenant_xvocabulary.xsd\"/>\n    <schema name=\"multitenantl10nvocabulary\" src=\"schemas/multi_tenant_l10nvocabulary.xsd\"/>\n    <schema name=\"multitenantl10nxvocabulary\" src=\"schemas/multi_tenant_l10nxvocabulary.xsd\"/>\n  </extension>\n\n  <extension target=\"org.nuxeo.ecm.core.schema.TypeService\"\n    point=\"doctype\">\n    <facet name=\"TenantConfig\">\n      <schema name=\"tenantconfig\" />\n    </facet>\n  </extension>\n</component>\n",
          "xmlFileName": "/OSGI-INF/core-types-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.platform.computedgroups.ComputedGroupsServiceImpl--computer",
              "hierarchyPath": "/grp:org.nuxeo.multi.tenant/grp:org.nuxeo.ecm.multi/org.nuxeo.ecm.multi.tenant/org.nuxeo.ecm.multi.tenant.computedgroups/Contributions/org.nuxeo.ecm.multi.tenant.computedgroups--computer",
              "id": "org.nuxeo.ecm.multi.tenant.computedgroups--computer",
              "registrationOrder": 0,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.platform.computedgroups.ComputedGroupsServiceImpl",
                "name": "org.nuxeo.ecm.platform.computedgroups.ComputedGroupsServiceImpl",
                "type": "service"
              },
              "version": "10.10",
              "xml": "<extension point=\"computer\" target=\"org.nuxeo.ecm.platform.computedgroups.ComputedGroupsServiceImpl\">\n    <groupComputer name=\"multiTenantGroupComputer\">\n      <computer>org.nuxeo.ecm.multi.tenant.MultiTenantGroupComputer</computer>\n    </groupComputer>\n  </extension>"
            },
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.platform.computedgroups.ComputedGroupsServiceImpl--computerChain",
              "hierarchyPath": "/grp:org.nuxeo.multi.tenant/grp:org.nuxeo.ecm.multi/org.nuxeo.ecm.multi.tenant/org.nuxeo.ecm.multi.tenant.computedgroups/Contributions/org.nuxeo.ecm.multi.tenant.computedgroups--computerChain",
              "id": "org.nuxeo.ecm.multi.tenant.computedgroups--computerChain",
              "registrationOrder": 0,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.platform.computedgroups.ComputedGroupsServiceImpl",
                "name": "org.nuxeo.ecm.platform.computedgroups.ComputedGroupsServiceImpl",
                "type": "service"
              },
              "version": "10.10",
              "xml": "<extension point=\"computerChain\" target=\"org.nuxeo.ecm.platform.computedgroups.ComputedGroupsServiceImpl\">\n    <groupComputerChain append=\"true\">\n      <computers>\n        <computer>multiTenantGroupComputer</computer>\n      </computers>\n    </groupComputerChain>\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.multi.tenant/grp:org.nuxeo.ecm.multi/org.nuxeo.ecm.multi.tenant/org.nuxeo.ecm.multi.tenant.computedgroups",
          "name": "org.nuxeo.ecm.multi.tenant.computedgroups",
          "requirements": [],
          "resolutionOrder": 240,
          "services": [],
          "startOrder": 241,
          "version": "10.10",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.multi.tenant.computedgroups\">\n\n  <extension target=\"org.nuxeo.ecm.platform.computedgroups.ComputedGroupsServiceImpl\"\n    point=\"computer\">\n    <groupComputer name=\"multiTenantGroupComputer\">\n      <computer>org.nuxeo.ecm.multi.tenant.MultiTenantGroupComputer</computer>\n    </groupComputer>\n  </extension>\n\n  <extension\n    target=\"org.nuxeo.ecm.platform.computedgroups.ComputedGroupsServiceImpl\"\n    point=\"computerChain\">\n    <groupComputerChain append=\"true\">\n      <computers>\n        <computer>multiTenantGroupComputer</computer>\n      </computers>\n    </groupComputerChain>\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/computedgroups-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "componentClass": "org.nuxeo.ecm.multi.tenant.MultiTenantServiceImpl",
          "documentation": "\n    @author Thomas Roger (troger@nuxeo.com)\n  \n",
          "documentationHtml": "<p></p>",
          "extensionPoints": [
            {
              "@type": "NXExtensionPoint",
              "componentId": "org.nuxeo.ecm.multi.tenant.MultiTenantService",
              "descriptors": [
                "org.nuxeo.ecm.multi.tenant.MultiTenantConfiguration"
              ],
              "documentation": "\n      The multi tenant configuration contains:\n\n      - tenantDocumentType: define the document type on which enable the\n        tenant isolation.\n      - membersGroupPermission: the default permission on the tenant for the\n        group containing all the members of the tenant.\n      - enabledByDefault: if 'true' the tenant isolation will be enabled when\n        Nuxeo starts.\n    \n",
              "documentationHtml": "<p>\nThe multi tenant configuration contains:\n</p><p>\n- tenantDocumentType: define the document type on which enable the\ntenant isolation.\n- membersGroupPermission: the default permission on the tenant for the\ngroup containing all the members of the tenant.\n- enabledByDefault: if &#39;true&#39; the tenant isolation will be enabled when\nNuxeo starts.\n</p><p></p>",
              "hierarchyPath": "/grp:org.nuxeo.multi.tenant/grp:org.nuxeo.ecm.multi/org.nuxeo.ecm.multi.tenant/org.nuxeo.ecm.multi.tenant.MultiTenantService/ExtensionPoints/org.nuxeo.ecm.multi.tenant.MultiTenantService--configuration",
              "id": "org.nuxeo.ecm.multi.tenant.MultiTenantService--configuration",
              "label": "configuration (org.nuxeo.ecm.multi.tenant.MultiTenantService)",
              "name": "configuration",
              "version": "10.10"
            }
          ],
          "extensions": [],
          "hierarchyPath": "/grp:org.nuxeo.multi.tenant/grp:org.nuxeo.ecm.multi/org.nuxeo.ecm.multi.tenant/org.nuxeo.ecm.multi.tenant.MultiTenantService",
          "name": "org.nuxeo.ecm.multi.tenant.MultiTenantService",
          "requirements": [],
          "resolutionOrder": 241,
          "services": [
            {
              "@type": "NXService",
              "componentId": "org.nuxeo.ecm.multi.tenant.MultiTenantService",
              "hierarchyPath": "/grp:org.nuxeo.multi.tenant/grp:org.nuxeo.ecm.multi/org.nuxeo.ecm.multi.tenant/org.nuxeo.ecm.multi.tenant.MultiTenantService/Services/org.nuxeo.ecm.multi.tenant.MultiTenantService",
              "id": "org.nuxeo.ecm.multi.tenant.MultiTenantService",
              "overriden": false,
              "version": "10.10"
            }
          ],
          "startOrder": 880,
          "version": "10.10",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.multi.tenant.MultiTenantService\">\n\n  <documentation>\n    @author Thomas Roger (troger@nuxeo.com)\n  </documentation>\n\n  <implementation\n    class=\"org.nuxeo.ecm.multi.tenant.MultiTenantServiceImpl\" />\n\n  <service>\n    <provide\n      interface=\"org.nuxeo.ecm.multi.tenant.MultiTenantService\" />\n  </service>\n\n  <extension-point name=\"configuration\">\n    <documentation>\n      The multi tenant configuration contains:\n\n      - tenantDocumentType: define the document type on which enable the\n        tenant isolation.\n      - membersGroupPermission: the default permission on the tenant for the\n        group containing all the members of the tenant.\n      - enabledByDefault: if 'true' the tenant isolation will be enabled when\n        Nuxeo starts.\n    </documentation>\n    <object class=\"org.nuxeo.ecm.multi.tenant.MultiTenantConfiguration\" />\n  </extension-point>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/multi-tenant-service.xml",
          "xmlPureComponent": false
        },
        {
          "@type": "NXComponent",
          "documentation": "@author Thomas Roger (troger@nuxeo.com)\n",
          "documentationHtml": "<p></p>",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.multi.tenant.MultiTenantService--configuration",
              "hierarchyPath": "/grp:org.nuxeo.multi.tenant/grp:org.nuxeo.ecm.multi/org.nuxeo.ecm.multi.tenant/org.nuxeo.ecm.multi.tenant.contrib/Contributions/org.nuxeo.ecm.multi.tenant.contrib--configuration",
              "id": "org.nuxeo.ecm.multi.tenant.contrib--configuration",
              "registrationOrder": 0,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.multi.tenant.MultiTenantService",
                "name": "org.nuxeo.ecm.multi.tenant.MultiTenantService",
                "type": "service"
              },
              "version": "10.10",
              "xml": "<extension point=\"configuration\" target=\"org.nuxeo.ecm.multi.tenant.MultiTenantService\">\n\n    <configuration>\n      <tenantDocumentType>Domain</tenantDocumentType>\n      <membersGroupPermission>Read</membersGroupPermission>\n      <prohibitedGroups>\n      \t<group>members</group>\n      \t<group>Everyone</group>\n      </prohibitedGroups>\n    </configuration>\n\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.multi.tenant/grp:org.nuxeo.ecm.multi/org.nuxeo.ecm.multi.tenant/org.nuxeo.ecm.multi.tenant.contrib",
          "name": "org.nuxeo.ecm.multi.tenant.contrib",
          "requirements": [],
          "resolutionOrder": 242,
          "services": [],
          "startOrder": 244,
          "version": "10.10",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.multi.tenant.contrib\"\n  version=\"1.0\">\n\n  <documentation>@author Thomas Roger (troger@nuxeo.com)</documentation>\n\n  <extension target=\"org.nuxeo.ecm.multi.tenant.MultiTenantService\"\n    point=\"configuration\">\n\n    <configuration>\n      <tenantDocumentType>Domain</tenantDocumentType>\n      <membersGroupPermission>Read</membersGroupPermission>\n      <prohibitedGroups>\n      \t<group>members</group>\n      \t<group>Everyone</group>\n      </prohibitedGroups>\n    </configuration>\n\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/multi-tenant-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.core.event.EventServiceComponent--listener",
              "hierarchyPath": "/grp:org.nuxeo.multi.tenant/grp:org.nuxeo.ecm.multi/org.nuxeo.ecm.multi.tenant/org.nuxeo.ecm.multi.tenant.listeners/Contributions/org.nuxeo.ecm.multi.tenant.listeners--listener",
              "id": "org.nuxeo.ecm.multi.tenant.listeners--listener",
              "registrationOrder": 16,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.core.event.EventServiceComponent",
                "name": "org.nuxeo.ecm.core.event.EventServiceComponent",
                "type": "service"
              },
              "version": "10.10",
              "xml": "<extension point=\"listener\" target=\"org.nuxeo.ecm.core.event.EventServiceComponent\">\n\n    <listener async=\"false\" class=\"org.nuxeo.ecm.multi.tenant.MultiTenantListener\" name=\"multiTenantListener\" postCommit=\"false\" priority=\"150\">\n      <event>documentCreated</event>\n      <event>documentCreatedByCopy</event>\n      <event>documentRemoved</event>\n      <event>lifecycle_transition_event</event>\n      <event>documentTrashed</event>\n      <event>documentUntrashed</event>\n    </listener>\n\n    <listener async=\"false\" class=\"org.nuxeo.ecm.multi.tenant.TenantAdministratorsListener\" name=\"tenantAdministratorsListener\" postCommit=\"false\" priority=\"100\">\n      <event>beforeDocumentModification</event>\n    </listener>\n\n    <listener async=\"false\" class=\"org.nuxeo.ecm.multi.tenant.acl.ACLUpdateListener\" name=\"multiTenantACLListener\" postCommit=\"false\" priority=\"150\">\n      <event>beforeDocumentSecurityModification</event>\n    </listener>\n\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.multi.tenant/grp:org.nuxeo.ecm.multi/org.nuxeo.ecm.multi.tenant/org.nuxeo.ecm.multi.tenant.listeners",
          "name": "org.nuxeo.ecm.multi.tenant.listeners",
          "requirements": [],
          "resolutionOrder": 243,
          "services": [],
          "startOrder": 250,
          "version": "10.10",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.multi.tenant.listeners\">\n\n  <extension target=\"org.nuxeo.ecm.core.event.EventServiceComponent\"\n    point=\"listener\">\n\n    <listener name=\"multiTenantListener\" async=\"false\"\n      postCommit=\"false\"\n      class=\"org.nuxeo.ecm.multi.tenant.MultiTenantListener\"\n      priority=\"150\">\n      <event>documentCreated</event>\n      <event>documentCreatedByCopy</event>\n      <event>documentRemoved</event>\n      <event>lifecycle_transition_event</event>\n      <event>documentTrashed</event>\n      <event>documentUntrashed</event>\n    </listener>\n\n    <listener name=\"tenantAdministratorsListener\" async=\"false\"\n      postCommit=\"false\"\n      class=\"org.nuxeo.ecm.multi.tenant.TenantAdministratorsListener\"\n      priority=\"100\">\n      <event>beforeDocumentModification</event>\n    </listener>\n\n    <listener name=\"multiTenantACLListener\" async=\"false\"\n      postCommit=\"false\"\n      class=\"org.nuxeo.ecm.multi.tenant.acl.ACLUpdateListener\"\n      priority=\"150\">\n      <event>beforeDocumentSecurityModification</event>\n    </listener>\n\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/listeners-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.core.cache.CacheService--caches",
              "hierarchyPath": "/grp:org.nuxeo.multi.tenant/grp:org.nuxeo.ecm.multi/org.nuxeo.ecm.multi.tenant/org.nuxeo.ecm.multi.tenant.cache.testsConfig/Contributions/org.nuxeo.ecm.multi.tenant.cache.testsConfig--caches",
              "id": "org.nuxeo.ecm.multi.tenant.cache.testsConfig--caches",
              "registrationOrder": 6,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.core.cache.CacheService",
                "name": "org.nuxeo.ecm.core.cache.CacheService",
                "type": "service"
              },
              "version": "10.10",
              "xml": "<extension point=\"caches\" target=\"org.nuxeo.ecm.core.cache.CacheService\">\n\n    <cache name=\"tenants-cache\">\n      <ttl>60</ttl><!-- minutes -->\n      <option name=\"maxSize\">1000</option>\n    </cache>\n\n    <cache name=\"tenants-cache-without-ref\">\n      <ttl>60</ttl><!-- minutes -->\n      <option name=\"maxSize\">1000</option>\n    </cache>\n\n    <cache name=\"topic-cache-without-ref\">\n      <ttl>60</ttl><!-- minutes -->\n      <option name=\"maxSize\">1000</option>\n    </cache>\n\n    <cache name=\"topic-cache\">\n      <ttl>60</ttl><!-- minutes -->\n      <option name=\"maxSize\">1000</option>\n    </cache>\n\n    <cache name=\"subtopic-cache-without-ref\">\n      <ttl>60</ttl><!-- minutes -->\n      <option name=\"maxSize\">1000</option>\n    </cache>\n\n    <cache name=\"subtopic-cache\">\n      <ttl>60</ttl><!-- minutes -->\n      <option name=\"maxSize\">1000</option>\n    </cache>\n\n    <cache name=\"l10nsubjects-cache-without-ref\">\n      <ttl>60</ttl><!-- minutes -->\n      <option name=\"maxSize\">1000</option>\n    </cache>\n\n    <cache name=\"l10nsubjects-cache\">\n      <ttl>60</ttl><!-- minutes -->\n      <option name=\"maxSize\">1000</option>\n    </cache>\n\n    <cache name=\"l10ncoverage-cache-without-ref\">\n      <ttl>60</ttl><!-- minutes -->\n      <option name=\"maxSize\">1000</option>\n    </cache>\n\n    <cache name=\"l10ncoverage-cache\">\n      <ttl>60</ttl><!-- minutes -->\n      <option name=\"maxSize\">1000</option>\n    </cache>\n\n\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.multi.tenant/grp:org.nuxeo.ecm.multi/org.nuxeo.ecm.multi.tenant/org.nuxeo.ecm.multi.tenant.cache.testsConfig",
          "name": "org.nuxeo.ecm.multi.tenant.cache.testsConfig",
          "requirements": [],
          "resolutionOrder": 244,
          "services": [],
          "startOrder": 240,
          "version": "10.10",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.multi.tenant.cache.testsConfig\">\n\n  <extension target=\"org.nuxeo.ecm.core.cache.CacheService\" point=\"caches\">\n\n    <cache name=\"tenants-cache\">\n      <ttl>60</ttl><!-- minutes -->\n      <option name=\"maxSize\">1000</option>\n    </cache>\n\n    <cache name=\"tenants-cache-without-ref\">\n      <ttl>60</ttl><!-- minutes -->\n      <option name=\"maxSize\">1000</option>\n    </cache>\n\n    <cache name=\"topic-cache-without-ref\">\n      <ttl>60</ttl><!-- minutes -->\n      <option name=\"maxSize\">1000</option>\n    </cache>\n\n    <cache name=\"topic-cache\">\n      <ttl>60</ttl><!-- minutes -->\n      <option name=\"maxSize\">1000</option>\n    </cache>\n\n    <cache name=\"subtopic-cache-without-ref\">\n      <ttl>60</ttl><!-- minutes -->\n      <option name=\"maxSize\">1000</option>\n    </cache>\n\n    <cache name=\"subtopic-cache\">\n      <ttl>60</ttl><!-- minutes -->\n      <option name=\"maxSize\">1000</option>\n    </cache>\n\n    <cache name=\"l10nsubjects-cache-without-ref\">\n      <ttl>60</ttl><!-- minutes -->\n      <option name=\"maxSize\">1000</option>\n    </cache>\n\n    <cache name=\"l10nsubjects-cache\">\n      <ttl>60</ttl><!-- minutes -->\n      <option name=\"maxSize\">1000</option>\n    </cache>\n\n    <cache name=\"l10ncoverage-cache-without-ref\">\n      <ttl>60</ttl><!-- minutes -->\n      <option name=\"maxSize\">1000</option>\n    </cache>\n\n    <cache name=\"l10ncoverage-cache\">\n      <ttl>60</ttl><!-- minutes -->\n      <option name=\"maxSize\">1000</option>\n    </cache>\n\n\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/directories-cache-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.core.schema.TypeService--schema",
              "hierarchyPath": "/grp:org.nuxeo.multi.tenant/grp:org.nuxeo.ecm.multi/org.nuxeo.ecm.multi.tenant/org.nuxeo.ecm.multi.tenant.directories/Contributions/org.nuxeo.ecm.multi.tenant.directories--schema",
              "id": "org.nuxeo.ecm.multi.tenant.directories--schema",
              "registrationOrder": 14,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.core.schema.TypeService",
                "name": "org.nuxeo.ecm.core.schema.TypeService",
                "type": "service"
              },
              "version": "10.10",
              "xml": "<extension point=\"schema\" target=\"org.nuxeo.ecm.core.schema.TypeService\">\n    <schema name=\"tenant\" src=\"schemas/tenant.xsd\"/>\n  </extension>"
            },
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.directory.GenericDirectory--directories",
              "hierarchyPath": "/grp:org.nuxeo.multi.tenant/grp:org.nuxeo.ecm.multi/org.nuxeo.ecm.multi.tenant/org.nuxeo.ecm.multi.tenant.directories/Contributions/org.nuxeo.ecm.multi.tenant.directories--directories",
              "id": "org.nuxeo.ecm.multi.tenant.directories--directories",
              "registrationOrder": 6,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.directory.GenericDirectory",
                "name": "org.nuxeo.ecm.directory.GenericDirectory",
                "type": "service"
              },
              "version": "10.10",
              "xml": "<extension point=\"directories\" target=\"org.nuxeo.ecm.directory.GenericDirectory\">\n\n    <directory extends=\"template-directory\" name=\"tenants\">\n      <schema>tenant</schema>\n      <idField>id</idField>\n      <entryCacheName>tenants-cache</entryCacheName>\n      <entryCacheWithoutReferencesName>tenants-cache-without-ref</entryCacheWithoutReferencesName>\n    </directory>\n\n    <directory extends=\"template-directory\" name=\"topic\">\n      <schema>multitenantvocabulary</schema>\n      <idField>id</idField>\n      <dataFile>directories/topic.csv</dataFile>\n      <entryCacheName>topic-cache</entryCacheName>\n      <entryCacheWithoutReferencesName>topic-cache-without-ref</entryCacheWithoutReferencesName>\n      <deleteConstraint class=\"org.nuxeo.ecm.directory.HierarchicalDirectoryDeleteConstraint\">\n        <property name=\"targetDirectory\">subtopic</property>\n        <property name=\"targetDirectoryField\">parent</property>\n      </deleteConstraint>\n    </directory>\n\n    <directory extends=\"template-directory\" name=\"subtopic\">\n      <schema>multitenantxvocabulary</schema>\n      <idField>id</idField>\n      <parentDirectory>topic</parentDirectory>\n      <dataFile>directories/subtopic.csv</dataFile>\n      <entryCacheName>subtopic-cache</entryCacheName>\n      <entryCacheWithoutReferencesName>subtopic-cache-without-ref</entryCacheWithoutReferencesName>\n    </directory>\n\n    <directory extends=\"template-directory\" name=\"l10nsubjects\">\n      <schema>multitenantl10nxvocabulary</schema>\n      <idField>id</idField>\n      <parentDirectory>l10nsubjects</parentDirectory>\n      <dataFile>directories/l10nsubjects.csv</dataFile>\n      <entryCacheName>l10nsubjects-cache</entryCacheName>\n      <entryCacheWithoutReferencesName>l10nsubjects-cache-without-ref</entryCacheWithoutReferencesName>\n      <deleteConstraint class=\"org.nuxeo.ecm.directory.HierarchicalDirectoryDeleteConstraint\">\n        <property name=\"targetDirectory\">l10nsubjects</property>\n        <property name=\"targetDirectoryField\">parent</property>\n      </deleteConstraint>\n    </directory>\n\n    <directory extends=\"template-directory\" name=\"l10ncoverage\">\n      <schema>multitenantl10nxvocabulary</schema>\n      <idField>id</idField>\n      <parentDirectory>l10ncoverage</parentDirectory>\n      <dataFile>directories/l10ncoverage.csv</dataFile>\n      <entryCacheName>l10ncoverage-cache</entryCacheName>\n      <entryCacheWithoutReferencesName>l10ncoverage-cache-without-ref</entryCacheWithoutReferencesName>\n      <deleteConstraint class=\"org.nuxeo.ecm.directory.HierarchicalDirectoryDeleteConstraint\">\n        <property name=\"targetDirectory\">l10ncoverage</property>\n        <property name=\"targetDirectoryField\">parent</property>\n      </deleteConstraint>\n    </directory>\n\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.multi.tenant/grp:org.nuxeo.ecm.multi/org.nuxeo.ecm.multi.tenant/org.nuxeo.ecm.multi.tenant.directories",
          "name": "org.nuxeo.ecm.multi.tenant.directories",
          "requirements": [
            "org.nuxeo.ecm.directories"
          ],
          "resolutionOrder": 352,
          "services": [],
          "startOrder": 246,
          "version": "10.10",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.multi.tenant.directories\">\n\n  <require>org.nuxeo.ecm.directories</require>\n\n  <extension target=\"org.nuxeo.ecm.core.schema.TypeService\" point=\"schema\">\n    <schema name=\"tenant\" src=\"schemas/tenant.xsd\" />\n  </extension>\n\n  <extension target=\"org.nuxeo.ecm.directory.GenericDirectory\" point=\"directories\">\n\n    <directory name=\"tenants\" extends=\"template-directory\">\n      <schema>tenant</schema>\n      <idField>id</idField>\n      <entryCacheName>tenants-cache</entryCacheName>\n      <entryCacheWithoutReferencesName>tenants-cache-without-ref</entryCacheWithoutReferencesName>\n    </directory>\n\n    <directory name=\"topic\" extends=\"template-directory\">\n      <schema>multitenantvocabulary</schema>\n      <idField>id</idField>\n      <dataFile>directories/topic.csv</dataFile>\n      <entryCacheName>topic-cache</entryCacheName>\n      <entryCacheWithoutReferencesName>topic-cache-without-ref</entryCacheWithoutReferencesName>\n      <deleteConstraint\n        class=\"org.nuxeo.ecm.directory.HierarchicalDirectoryDeleteConstraint\">\n        <property name=\"targetDirectory\">subtopic</property>\n        <property name=\"targetDirectoryField\">parent</property>\n      </deleteConstraint>\n    </directory>\n\n    <directory name=\"subtopic\" extends=\"template-directory\">\n      <schema>multitenantxvocabulary</schema>\n      <idField>id</idField>\n      <parentDirectory>topic</parentDirectory>\n      <dataFile>directories/subtopic.csv</dataFile>\n      <entryCacheName>subtopic-cache</entryCacheName>\n      <entryCacheWithoutReferencesName>subtopic-cache-without-ref</entryCacheWithoutReferencesName>\n    </directory>\n\n    <directory name=\"l10nsubjects\" extends=\"template-directory\">\n      <schema>multitenantl10nxvocabulary</schema>\n      <idField>id</idField>\n      <parentDirectory>l10nsubjects</parentDirectory>\n      <dataFile>directories/l10nsubjects.csv</dataFile>\n      <entryCacheName>l10nsubjects-cache</entryCacheName>\n      <entryCacheWithoutReferencesName>l10nsubjects-cache-without-ref</entryCacheWithoutReferencesName>\n      <deleteConstraint\n        class=\"org.nuxeo.ecm.directory.HierarchicalDirectoryDeleteConstraint\">\n        <property name=\"targetDirectory\">l10nsubjects</property>\n        <property name=\"targetDirectoryField\">parent</property>\n      </deleteConstraint>\n    </directory>\n\n    <directory name=\"l10ncoverage\" extends=\"template-directory\">\n      <schema>multitenantl10nxvocabulary</schema>\n      <idField>id</idField>\n      <parentDirectory>l10ncoverage</parentDirectory>\n      <dataFile>directories/l10ncoverage.csv</dataFile>\n      <entryCacheName>l10ncoverage-cache</entryCacheName>\n      <entryCacheWithoutReferencesName>l10ncoverage-cache-without-ref</entryCacheWithoutReferencesName>\n      <deleteConstraint\n        class=\"org.nuxeo.ecm.directory.HierarchicalDirectoryDeleteConstraint\">\n        <property name=\"targetDirectory\">l10ncoverage</property>\n        <property name=\"targetDirectoryField\">parent</property>\n      </deleteConstraint>\n    </directory>\n\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/directories-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.platform.usermanager.UserService--userManager",
              "hierarchyPath": "/grp:org.nuxeo.multi.tenant/grp:org.nuxeo.ecm.multi/org.nuxeo.ecm.multi.tenant/org.nuxeo.ecm.multi.tenant.usermanager/Contributions/org.nuxeo.ecm.multi.tenant.usermanager--userManager",
              "id": "org.nuxeo.ecm.multi.tenant.usermanager--userManager",
              "registrationOrder": 2,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.platform.usermanager.UserService",
                "name": "org.nuxeo.ecm.platform.usermanager.UserService",
                "type": "service"
              },
              "version": "10.10",
              "xml": "<extension point=\"userManager\" target=\"org.nuxeo.ecm.platform.usermanager.UserService\">\n\n    <userManager class=\"org.nuxeo.ecm.multi.tenant.MultiTenantUserManager\">\n      <users>\n        <listingMode>search_only</listingMode>\n      </users>\n    </userManager>\n\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.multi.tenant/grp:org.nuxeo.ecm.multi/org.nuxeo.ecm.multi.tenant/org.nuxeo.ecm.multi.tenant.usermanager",
          "name": "org.nuxeo.ecm.multi.tenant.usermanager",
          "requirements": [
            "org.nuxeo.ecm.platform.usermanager.UserManagerImpl"
          ],
          "resolutionOrder": 595,
          "services": [],
          "startOrder": 252,
          "version": "10.10",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.multi.tenant.usermanager\">\n\n  <require>org.nuxeo.ecm.platform.usermanager.UserManagerImpl</require>\n\n  <extension target=\"org.nuxeo.ecm.platform.usermanager.UserService\"\n    point=\"userManager\">\n\n    <userManager\n      class=\"org.nuxeo.ecm.multi.tenant.MultiTenantUserManager\">\n      <users>\n        <listingMode>search_only</listingMode>\n      </users>\n    </userManager>\n\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/usermanager-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.platform.userworkspace.UserWorkspaceService--userWorkspace",
              "hierarchyPath": "/grp:org.nuxeo.multi.tenant/grp:org.nuxeo.ecm.multi/org.nuxeo.ecm.multi.tenant/org.nuxeo.ecm.multi.tenant.userworkspace/Contributions/org.nuxeo.ecm.multi.tenant.userworkspace--userWorkspace",
              "id": "org.nuxeo.ecm.multi.tenant.userworkspace--userWorkspace",
              "registrationOrder": 1,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.platform.userworkspace.UserWorkspaceService",
                "name": "org.nuxeo.ecm.platform.userworkspace.UserWorkspaceService",
                "type": "service"
              },
              "version": "10.10",
              "xml": "<extension point=\"userWorkspace\" target=\"org.nuxeo.ecm.platform.userworkspace.UserWorkspaceService\">\n    <userWorkspace class=\"org.nuxeo.ecm.multi.tenant.userworkspace.MultiTenantUserWorkspaceService\"/>\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.multi.tenant/grp:org.nuxeo.ecm.multi/org.nuxeo.ecm.multi.tenant/org.nuxeo.ecm.multi.tenant.userworkspace",
          "name": "org.nuxeo.ecm.multi.tenant.userworkspace",
          "requirements": [
            "org.nuxeo.ecm.platform.userworkspace.UserWorkspaceServiceImpl"
          ],
          "resolutionOrder": 604,
          "services": [],
          "startOrder": 253,
          "version": "10.10",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.multi.tenant.userworkspace\">\n\n  <require>org.nuxeo.ecm.platform.userworkspace.UserWorkspaceServiceImpl</require>\n\n  <extension target=\"org.nuxeo.ecm.platform.userworkspace.UserWorkspaceService\"\n    point=\"userWorkspace\">\n    <userWorkspace\n      class=\"org.nuxeo.ecm.multi.tenant.userworkspace.MultiTenantUserWorkspaceService\"/>\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/userworkspace-contrib.xml",
          "xmlPureComponent": true
        }
      ],
      "fileName": "nuxeo-multi-tenant-core-10.10.jar",
      "groupId": "org.nuxeo.multi.tenant",
      "hierarchyPath": "/grp:org.nuxeo.multi.tenant/grp:org.nuxeo.ecm.multi/org.nuxeo.ecm.multi.tenant",
      "id": "org.nuxeo.ecm.multi.tenant",
      "location": "",
      "manifest": "Manifest-Version: 1.0\r\nArchiver-Version: Plexus Archiver\r\nCreated-By: Apache Maven\r\nBuilt-By: jenkins\r\nBuild-Jdk: 1.8.0_191\r\nBundle-ManifestVersion: 1\r\nBundle-Version: 0.0.1\r\nBundle-Name: Nuxeo Multi Tenant Core\r\nBundle-SymbolicName: org.nuxeo.ecm.multi.tenant;singleton:=true\r\nBundle-Vendor: Nuxeo\r\nNuxeo-Component: OSGI-INF/core-types-contrib.xml,OSGI-INF/computedgrou\r\n ps-contrib.xml,OSGI-INF/multi-tenant-service.xml,OSGI-INF/multi-tenan\r\n t-contrib.xml,OSGI-INF/listeners-contrib.xml,OSGI-INF/directories-con\r\n trib.xml,OSGI-INF/directories-cache-contrib.xml,OSGI-INF/usermanager-\r\n contrib.xml,OSGI-INF/userworkspace-contrib.xml\r\n\r\n",
      "maxResolutionOrder": 604,
      "minResolutionOrder": 239,
      "packages": [
        "nuxeo-multi-tenant"
      ],
      "parentReadme": {
        "blobProviderId": "default",
        "content": "This module provides multi tenant support through Domain and local configuration.\n\n# Building\n\n    mvn clean install\n\n## Deploying\n\nInstall [the Nuxeo Multi Tenant Marketplace Package](https://connect.nuxeo.com/nuxeo/site/marketplace/package/nuxeo-multi-tenant).\nOr manually copy the built artifacts into `$NUXEO_HOME/templates/custom/bundles/` and activate the \"custom\" template.\n\n## QA results\n\n[![Build Status](https://qa.nuxeo.org/jenkins/buildStatus/icon?job=addons_nuxeo-multi-tenant-master)](https://qa.nuxeo.org/jenkins/job/addons_nuxeo-multi-tenant-master/)\n\n# About Nuxeo\n\nNuxeo dramatically improves how content-based applications are built, managed and deployed, making customers more agile, innovative and successful. Nuxeo provides a next generation, enterprise ready platform for building traditional and cutting-edge content oriented applications. Combining a powerful application development environment with SaaS-based tools and a modular architecture, the Nuxeo Platform and Products provide clear business value to some of the most recognizable brands including Verizon, Electronic Arts, Sharp, FICO, the U.S. Navy, and Boeing. Nuxeo is headquartered in New York and Paris. More information is available at www.nuxeo.com.\n",
        "digest": "63651aa5857f2a64d7aae39045f9bf96",
        "encoding": "UTF-8",
        "length": 1242,
        "mimeType": "text/plain",
        "name": "README.md"
      },
      "requirements": [],
      "version": "10.10"
    },
    {
      "@type": "NXBundle",
      "artifactId": "nuxeo-multi-tenant-jsf",
      "artifactVersion": "10.10-HF21",
      "bundleGroup": {
        "@type": "NXBundleGroup",
        "bundleIds": [
          "org.nuxeo.ecm.multi.tenant",
          "org.nuxeo.ecm.multi.tenant.jsf"
        ],
        "hierarchyPath": "/grp:org.nuxeo.multi.tenant/grp:org.nuxeo.ecm.multi",
        "id": "grp:org.nuxeo.ecm.multi",
        "name": "org.nuxeo.ecm.multi",
        "parentIds": [
          "grp:org.nuxeo.multi.tenant"
        ],
        "readmes": [
          {
            "blobProviderId": "default",
            "content": "This module provides multi tenant support through Domain and local configuration.\n\n# Building\n\n    mvn clean install\n\n## Deploying\n\nInstall [the Nuxeo Multi Tenant Marketplace Package](https://connect.nuxeo.com/nuxeo/site/marketplace/package/nuxeo-multi-tenant).\nOr manually copy the built artifacts into `$NUXEO_HOME/templates/custom/bundles/` and activate the \"custom\" template.\n\n## QA results\n\n[![Build Status](https://qa.nuxeo.org/jenkins/buildStatus/icon?job=addons_nuxeo-multi-tenant-master)](https://qa.nuxeo.org/jenkins/job/addons_nuxeo-multi-tenant-master/)\n\n# About Nuxeo\n\nNuxeo dramatically improves how content-based applications are built, managed and deployed, making customers more agile, innovative and successful. Nuxeo provides a next generation, enterprise ready platform for building traditional and cutting-edge content oriented applications. Combining a powerful application development environment with SaaS-based tools and a modular architecture, the Nuxeo Platform and Products provide clear business value to some of the most recognizable brands including Verizon, Electronic Arts, Sharp, FICO, the U.S. Navy, and Boeing. Nuxeo is headquartered in New York and Paris. More information is available at www.nuxeo.com.\n",
            "digest": "63651aa5857f2a64d7aae39045f9bf96",
            "encoding": "UTF-8",
            "length": 1242,
            "mimeType": "text/plain",
            "name": "README.md"
          }
        ],
        "version": "10.10"
      },
      "bundleId": "org.nuxeo.ecm.multi.tenant.jsf",
      "components": [
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.platform.ui.web.ContentViewService--contentViews",
              "hierarchyPath": "/grp:org.nuxeo.multi.tenant/grp:org.nuxeo.ecm.multi/org.nuxeo.ecm.multi.tenant.jsf/org.nuxeo.ecm.multi.tenant.content.views/Contributions/org.nuxeo.ecm.multi.tenant.content.views--contentViews",
              "id": "org.nuxeo.ecm.multi.tenant.content.views--contentViews",
              "registrationOrder": 1,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.platform.ui.web.ContentViewService",
                "name": "org.nuxeo.ecm.platform.ui.web.ContentViewService",
                "type": "service"
              },
              "version": "10.10-HF21",
              "xml": "<extension point=\"contentViews\" target=\"org.nuxeo.ecm.platform.ui.web.ContentViewService\">\n\n    <contentView name=\"TENANT_HISTORY\">\n\n      <title>label.contentview.document.history</title>\n      <translateTitle>true</translateTitle>\n      <showTitle>true</showTitle>\n\n      <genericPageProvider class=\"org.nuxeo.ecm.platform.audit.api.AuditPageProvider\">\n        <property name=\"coreSession\">#{documentManager}</property>\n        <property name=\"generateUIComments\">true</property>\n\n        <whereClause docType=\"BasicAuditSearch\">\n          <fixedPart>\n            log.docPath like ?\n          </fixedPart>\n\n          <predicate operator=\"BETWEEN\" parameter=\"log.eventDate\">\n            <field name=\"startDate\" schema=\"basicauditsearch\"/>\n            <field name=\"endDate\" schema=\"basicauditsearch\"/>\n          </predicate>\n          <predicate operator=\"=\" parameter=\"log.category\">\n            <field name=\"eventCategory\" schema=\"basicauditsearch\"/>\n          </predicate>\n          <predicate operator=\"IN\" parameter=\"log.eventId\">\n            <field name=\"eventIds\" schema=\"basicauditsearch\"/>\n          </predicate>\n          <predicate operator=\"=\" parameter=\"log.principalName\">\n            <field name=\"principalName\" schema=\"basicauditsearch\"/>\n          </predicate>\n        </whereClause>\n        <parameter>#{currentDocument.path}%</parameter>\n        <sort ascending=\"false\" column=\"log.eventDate\"/>\n        <pageSize>10</pageSize>\n        <maxPageSize>1000</maxPageSize>\n      </genericPageProvider>\n\n      <searchLayout filterDisplayType=\"quick\" name=\"basicauditsearch\"/>\n      <showFilterForm>true</showFilterForm>\n\n      <showPageSizeSelector>true</showPageSizeSelector>\n      <useGlobalPageSize>true</useGlobalPageSize>\n      <refresh>\n        <event>documentChanged</event>\n        <event>documentCreated</event>\n        <event>documentChildrenChanged</event>\n      </refresh>\n      <cacheSize>10</cacheSize>\n      <cacheKey>#{currentDocument.repositoryName}_#{currentDocument.id}</cacheKey>\n\n      <resultLayouts>\n        <layout iconPath=\"/icons/document_listing_icon.png\" name=\"tenant_event_listing\" showCSVExport=\"true\" showPDFExport=\"false\" title=\"history_listing\" translateTitle=\"true\"/>\n      </resultLayouts>\n\n    </contentView>\n\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.multi.tenant/grp:org.nuxeo.ecm.multi/org.nuxeo.ecm.multi.tenant.jsf/org.nuxeo.ecm.multi.tenant.content.views",
          "name": "org.nuxeo.ecm.multi.tenant.content.views",
          "requirements": [],
          "resolutionOrder": 245,
          "services": [],
          "startOrder": 242,
          "version": "10.10-HF21",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.multi.tenant.content.views\">\n\n  <extension target=\"org.nuxeo.ecm.platform.ui.web.ContentViewService\"\n    point=\"contentViews\">\n\n    <contentView name=\"TENANT_HISTORY\">\n\n      <title>label.contentview.document.history</title>\n      <translateTitle>true</translateTitle>\n      <showTitle>true</showTitle>\n\n      <genericPageProvider\n        class=\"org.nuxeo.ecm.platform.audit.api.AuditPageProvider\">\n        <property name=\"coreSession\">#{documentManager}</property>\n        <property name=\"generateUIComments\">true</property>\n\n        <whereClause docType=\"BasicAuditSearch\">\n          <fixedPart>\n            log.docPath like ?\n          </fixedPart>\n\n          <predicate parameter=\"log.eventDate\" operator=\"BETWEEN\">\n            <field schema=\"basicauditsearch\" name=\"startDate\" />\n            <field schema=\"basicauditsearch\" name=\"endDate\" />\n          </predicate>\n          <predicate parameter=\"log.category\" operator=\"=\">\n            <field schema=\"basicauditsearch\" name=\"eventCategory\" />\n          </predicate>\n          <predicate parameter=\"log.eventId\" operator=\"IN\">\n            <field schema=\"basicauditsearch\" name=\"eventIds\" />\n          </predicate>\n          <predicate parameter=\"log.principalName\" operator=\"=\">\n            <field schema=\"basicauditsearch\" name=\"principalName\" />\n          </predicate>\n        </whereClause>\n        <parameter>#{currentDocument.path}%</parameter>\n        <sort column=\"log.eventDate\" ascending=\"false\" />\n        <pageSize>10</pageSize>\n        <maxPageSize>1000</maxPageSize>\n      </genericPageProvider>\n\n      <searchLayout name=\"basicauditsearch\" filterDisplayType=\"quick\" />\n      <showFilterForm>true</showFilterForm>\n\n      <showPageSizeSelector>true</showPageSizeSelector>\n      <useGlobalPageSize>true</useGlobalPageSize>\n      <refresh>\n        <event>documentChanged</event>\n        <event>documentCreated</event>\n        <event>documentChildrenChanged</event>\n      </refresh>\n      <cacheSize>10</cacheSize>\n      <cacheKey>#{currentDocument.repositoryName}_#{currentDocument.id}</cacheKey>\n\n      <resultLayouts>\n        <layout name=\"tenant_event_listing\" title=\"history_listing\"\n          translateTitle=\"true\" iconPath=\"/icons/document_listing_icon.png\"\n          showCSVExport=\"true\" showPDFExport=\"false\" />\n      </resultLayouts>\n\n    </contentView>\n\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/contentviews-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.platform.ui.web.ContentViewService--contentViews",
              "hierarchyPath": "/grp:org.nuxeo.multi.tenant/grp:org.nuxeo.ecm.multi/org.nuxeo.ecm.multi.tenant.jsf/org.nuxeo.ecm.multi.tenant.content.views.es/Contributions/org.nuxeo.ecm.multi.tenant.content.views.es--contentViews",
              "id": "org.nuxeo.ecm.multi.tenant.content.views.es--contentViews",
              "registrationOrder": 2,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.platform.ui.web.ContentViewService",
                "name": "org.nuxeo.ecm.platform.ui.web.ContentViewService",
                "type": "service"
              },
              "version": "10.10-HF21",
              "xml": "<extension point=\"contentViews\" target=\"org.nuxeo.ecm.platform.ui.web.ContentViewService\">\n\n    <contentView name=\"TENANT_HISTORY\">\n\n      <title>label.contentview.document.history</title>\n      <translateTitle>true</translateTitle>\n      <showTitle>true</showTitle>\n\n      <genericPageProvider class=\"org.nuxeo.elasticsearch.audit.pageprovider.ESAuditPageProvider\" name=\"EVENTS_VIEW\">\n        <property name=\"coreSession\">#{documentManager}</property>\n        <property name=\"generateUIComments\">false</property>\n        <whereClause docType=\"BasicAuditSearch\">\n          <fixedPart>\n            {\n              \"bool\": {\n                \"must\": {\n                  \"prefix\": {\n                    \"docPath.children\": {\n                      \"value\": \"?\"\n                    }\n                  }\n                }\n              }\n            }\n          </fixedPart>\n\n          <predicate operator=\"BETWEEN\" parameter=\"eventDate\">\n            <field name=\"startDate\" schema=\"basicauditsearch\"/>\n            <field name=\"endDate\" schema=\"basicauditsearch\"/>\n          </predicate>\n          <predicate operator=\"=\" parameter=\"category\">\n            <field name=\"eventCategory\" schema=\"basicauditsearch\"/>\n          </predicate>\n          <predicate operator=\"IN\" parameter=\"eventId\">\n            <field name=\"eventIds\" schema=\"basicauditsearch\"/>\n          </predicate>\n          <predicate operator=\"=\" parameter=\"principalName\">\n            <field name=\"principalName\" schema=\"basicauditsearch\"/>\n          </predicate>\n        </whereClause>\n        <parameter>#{currentDocument.path}</parameter>\n        <sort ascending=\"false\" column=\"eventDate\"/>\n        <pageSize>10</pageSize>\n        <maxPageSize>1000</maxPageSize>\n      </genericPageProvider>\n\n      <searchLayout filterDisplayType=\"quick\" name=\"basicauditsearch\"/>\n      <showFilterForm>true</showFilterForm>\n\n      <showPageSizeSelector>true</showPageSizeSelector>\n      <useGlobalPageSize>true</useGlobalPageSize>\n      <refresh>\n        <event>documentChanged</event>\n        <event>documentCreated</event>\n        <event>documentChildrenChanged</event>\n      </refresh>\n      <cacheSize>10</cacheSize>\n      <cacheKey>#{currentDocument.repositoryName}_#{currentDocument.id}</cacheKey>\n\n      <resultLayouts>\n        <layout iconPath=\"/icons/document_listing_icon.png\" name=\"tenant_event_listing\" showCSVExport=\"true\" showPDFExport=\"false\" title=\"history_listing\" translateTitle=\"true\"/>\n      </resultLayouts>\n\n    </contentView>\n\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.multi.tenant/grp:org.nuxeo.ecm.multi/org.nuxeo.ecm.multi.tenant.jsf/org.nuxeo.ecm.multi.tenant.content.views.es",
          "name": "org.nuxeo.ecm.multi.tenant.content.views.es",
          "requirements": [
            "org.nuxeo.ecm.multi.tenant.content.views"
          ],
          "resolutionOrder": 246,
          "services": [],
          "startOrder": 243,
          "version": "10.10-HF21",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.multi.tenant.content.views.es\">\n\n  <require>org.nuxeo.ecm.multi.tenant.content.views</require>\n\n  <extension target=\"org.nuxeo.ecm.platform.ui.web.ContentViewService\"\n    point=\"contentViews\">\n\n    <contentView name=\"TENANT_HISTORY\">\n\n      <title>label.contentview.document.history</title>\n      <translateTitle>true</translateTitle>\n      <showTitle>true</showTitle>\n\n      <genericPageProvider name=\"EVENTS_VIEW\" class=\"org.nuxeo.elasticsearch.audit.pageprovider.ESAuditPageProvider\">\n        <property name=\"coreSession\">#{documentManager}</property>\n        <property name=\"generateUIComments\">false</property>\n        <whereClause docType=\"BasicAuditSearch\">\n          <fixedPart>\n            {\n              \"bool\": {\n                \"must\": {\n                  \"prefix\": {\n                    \"docPath.children\": {\n                      \"value\": \"?\"\n                    }\n                  }\n                }\n              }\n            }\n          </fixedPart>\n\n          <predicate parameter=\"eventDate\" operator=\"BETWEEN\">\n            <field schema=\"basicauditsearch\" name=\"startDate\" />\n            <field schema=\"basicauditsearch\" name=\"endDate\" />\n          </predicate>\n          <predicate parameter=\"category\" operator=\"=\">\n            <field schema=\"basicauditsearch\" name=\"eventCategory\" />\n          </predicate>\n          <predicate parameter=\"eventId\" operator=\"IN\">\n            <field schema=\"basicauditsearch\" name=\"eventIds\" />\n          </predicate>\n          <predicate parameter=\"principalName\" operator=\"=\">\n            <field schema=\"basicauditsearch\" name=\"principalName\" />\n          </predicate>\n        </whereClause>\n        <parameter>#{currentDocument.path}</parameter>\n        <sort column=\"eventDate\" ascending=\"false\" />\n        <pageSize>10</pageSize>\n        <maxPageSize>1000</maxPageSize>\n      </genericPageProvider>\n\n      <searchLayout name=\"basicauditsearch\" filterDisplayType=\"quick\" />\n      <showFilterForm>true</showFilterForm>\n\n      <showPageSizeSelector>true</showPageSizeSelector>\n      <useGlobalPageSize>true</useGlobalPageSize>\n      <refresh>\n        <event>documentChanged</event>\n        <event>documentCreated</event>\n        <event>documentChildrenChanged</event>\n      </refresh>\n      <cacheSize>10</cacheSize>\n      <cacheKey>#{currentDocument.repositoryName}_#{currentDocument.id}</cacheKey>\n\n      <resultLayouts>\n        <layout name=\"tenant_event_listing\" title=\"history_listing\"\n          translateTitle=\"true\" iconPath=\"/icons/document_listing_icon.png\"\n          showCSVExport=\"true\" showPDFExport=\"false\" />\n      </resultLayouts>\n\n    </contentView>\n\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/contentviews-es-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.platform.forms.layout.WebLayoutManager--widgets",
              "hierarchyPath": "/grp:org.nuxeo.multi.tenant/grp:org.nuxeo.ecm.multi/org.nuxeo.ecm.multi.tenant.jsf/org.nuxeo.ecm.multi.tenant.layouts/Contributions/org.nuxeo.ecm.multi.tenant.layouts--widgets",
              "id": "org.nuxeo.ecm.multi.tenant.layouts--widgets",
              "registrationOrder": 12,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.platform.forms.layout.WebLayoutManager",
                "name": "org.nuxeo.ecm.platform.forms.layout.WebLayoutManager",
                "type": "service"
              },
              "version": "10.10-HF21",
              "xml": "<?xml version='1.0' encoding='UTF-8'?>\n<extension point=\"widgets\" target=\"org.nuxeo.ecm.platform.forms.layout.WebLayoutManager\">\n\n    <widget name=\"tenantId\" type=\"selectOneMenu\">\n      <labels>\n        <label mode=\"any\">label.tenant.id</label>\n      </labels>\n      <translated>true</translated>\n      <fields>\n        <field>user:tenantId</field>\n      </fields>\n      <widgetModes>\n        <mode value=\"editPassword\">********</mode>\n        <mode value=\"create\">#{nxu:test(multiTenantActions.isTenantIsolationEnabled()\n            and webActions.checkFilter('only_for_manager'), 'edit', 'hidden')}</mode>\n        <mode value=\"edit\">#{nxu:test(multiTenantActions.isTenantIsolationEnabled()\n            and webActions.checkFilter('only_for_manager'), 'edit', 'hidden')}</mode>\n        <mode value=\"view\">hidden</mode>\n      </widgetModes>\n      <selectOptions>\n        <option itemLabel=\"None\" itemValue=\"\"/>\n        <options itemLabel=\"#{doc.tenant.label}\" itemValue=\"#{doc.tenant.id}\" value=\"#{multiTenantActions.tenants}\" var=\"doc\"/>\n      </selectOptions>\n    </widget>\n    <widget name=\"tenantIdView\" type=\"text\">\n      <labels>\n        <label mode=\"any\">label.tenant.id</label>\n      </labels>\n      <translated>true</translated>\n      <fields>\n        <field>user:tenantId</field>\n      </fields>\n      <widgetModes>\n        <mode value=\"editPassword\">********</mode>\n        <mode value=\"create\">hidden</mode>\n        <mode value=\"edit\">hidden</mode>\n        <mode value=\"view\">#{nxu:test(multiTenantActions.isTenantIsolationEnabled()\n          and webActions.checkFilter('only_for_manager'), 'view', 'hidden')}</mode>\n      </widgetModes>\n    </widget>\n\n    <widget name=\"userTenantId\" type=\"layout\">\n      <properties mode=\"any\">\n        <property name=\"name\">user_tenant_id</property>\n      </properties>\n    </widget>\n\n  </extension>"
            },
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.platform.actions.ActionService--actions",
              "hierarchyPath": "/grp:org.nuxeo.multi.tenant/grp:org.nuxeo.ecm.multi/org.nuxeo.ecm.multi.tenant.jsf/org.nuxeo.ecm.multi.tenant.layouts/Contributions/org.nuxeo.ecm.multi.tenant.layouts--actions",
              "id": "org.nuxeo.ecm.multi.tenant.layouts--actions",
              "registrationOrder": 35,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.platform.actions.ActionService",
                "name": "org.nuxeo.ecm.platform.actions.ActionService",
                "type": "service"
              },
              "version": "10.10-HF21",
              "xml": "<extension point=\"actions\" target=\"org.nuxeo.ecm.platform.actions.ActionService\">\n\n    <action id=\"userTenantId\" order=\"100\" type=\"widget\">\n      <category>USER_ADDITIONAL_WIDGETS</category>\n      <properties>\n        <property name=\"widgetName\">userTenantId</property>\n      </properties>\n    </action>\n\n  </extension>"
            },
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.platform.forms.layout.WebLayoutManager--layouts",
              "hierarchyPath": "/grp:org.nuxeo.multi.tenant/grp:org.nuxeo.ecm.multi/org.nuxeo.ecm.multi.tenant.jsf/org.nuxeo.ecm.multi.tenant.layouts/Contributions/org.nuxeo.ecm.multi.tenant.layouts--layouts",
              "id": "org.nuxeo.ecm.multi.tenant.layouts--layouts",
              "registrationOrder": 14,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.platform.forms.layout.WebLayoutManager",
                "name": "org.nuxeo.ecm.platform.forms.layout.WebLayoutManager",
                "type": "service"
              },
              "version": "10.10-HF21",
              "xml": "<extension point=\"layouts\" target=\"org.nuxeo.ecm.platform.forms.layout.WebLayoutManager\">\n\n    <layout name=\"user_tenant_id\">\n      <templates>\n        <template mode=\"any\">\n          /layouts/layout_default_template.xhtml\n        </template>\n      </templates>\n      <rows>\n        <row>\n          <widget>tenantId</widget>\n        </row>\n        <!-- hack because the selectOneMenu widget display nothing in 'view' mode  -->\n        <row>\n          <widget>tenantIdView</widget>\n        </row>\n      </rows>\n    </layout>\n\n   <layout name=\"multi_tenant_content_view_configuration\">\n      <templates>\n        <template mode=\"any\">\n          /layouts/layout_default_template.xhtml\n        </template>\n      </templates>\n      <rows>\n        <row>\n          <widget>content_view_selection</widget>\n        </row>\n      </rows>\n    </layout>\n\n    <layout name=\"multi_tenant_ui_types_configuration\">\n      <templates>\n        <template mode=\"any\">\n          /layouts/layout_default_template.xhtml\n        </template>\n      </templates>\n      <rows>\n        <row>\n          <widget>ui_types_selection</widget>\n        </row>\n        <row>\n          <widget>deny_all_types</widget>\n        </row>\n        <row>\n          <widget>default_type</widget>\n        </row>\n      </rows>\n    </layout>\n\n   <layout name=\"multi_tenant_search_configuration\">\n      <templates>\n        <template mode=\"any\">\n          /layouts/layout_default_template.xhtml\n        </template>\n      </templates>\n      <rows>\n        <row>\n          <widget>search_content_views_selection</widget>\n        </row>\n      </rows>\n    </layout>\n\n    <layout name=\"tenant_configuration\">\n      <templates>\n        <template mode=\"any\">\n          /layouts/layout_default_template.xhtml\n        </template>\n      </templates>\n      <rows>\n        <row>\n          <widget>tenant_id</widget>\n        </row>\n        <row>\n          <widget>tenant_administrators</widget>\n        </row>\n      </rows>\n      <widget name=\"tenant_id\" type=\"text\">\n        <labels>\n          <label mode=\"any\">label.tenant.id</label>\n        </labels>\n        <translated>true</translated>\n        <fields>\n          <field>tenantconfig:tenantId</field>\n        </fields>\n        <properties widgetMode=\"edit\">\n          <property name=\"styleClass\">dataInputText</property>\n          <property name=\"required\">true</property>\n        </properties>\n        <widgetModes>\n          <mode value=\"edit\">\n            #{nxu:test(multiTenantActions.isTenantIsolationEnabled(), 'view', 'hidden')}\n          </mode>\n        </widgetModes>\n      </widget>\n      <widget name=\"tenant_administrators\" type=\"template\">\n        <labels>\n          <label mode=\"any\">label.tenant.administrators</label>\n        </labels>\n        <translated>true</translated>\n        <fields>\n          <field>tenantconfig:administrators</field>\n        </fields>\n        <widgetModes>\n          <mode value=\"create\">\n            hidden\n          </mode>\n          <mode value=\"edit\">\n            #{nxu:test(multiTenantActions.isTenantIsolationEnabled(), 'edit', 'hidden')}\n          </mode>\n        </widgetModes>\n        <properties widgetMode=\"edit\">\n          <property name=\"required\">true</property>\n          <property name=\"userSuggestionSearchType\">USER_TYPE</property>\n          <property name=\"minChars\">3</property>\n          <property name=\"hideHelpLabel\">true</property>\n        </properties>\n        <properties widgetMode=\"any\">\n          <property name=\"template\">/widgets/tenant_administrators_widget.xhtml</property>\n        </properties>\n      </widget>\n    </layout>\n\n    <layout name=\"tenant_event_listing\">\n      <templates>\n        <template mode=\"any\">/layouts/layout_listing_ajax_template.xhtml\n        </template>\n        <template mode=\"csv\">/layouts/layout_listing_csv_template.xhtml\n        </template>\n        <template mode=\"pdf\">/layouts/layout_listing_pdf_template.xhtml\n        </template>\n      </templates>\n      <properties mode=\"any\">\n        <property name=\"showListingHeader\">true</property>\n        <property name=\"showRowEvenOddClass\">true</property>\n      </properties>\n      <columns>\n        <column>\n          <properties mode=\"any\">\n            <property name=\"useFirstWidgetLabelAsColumnHeader\">true</property>\n            <property name=\"sortPropertyName\">eventId</property>\n          </properties>\n          <widget>eventId</widget>\n        </column>\n        <column>\n          <properties mode=\"any\">\n            <property name=\"useFirstWidgetLabelAsColumnHeader\">true</property>\n            <property name=\"sortPropertyName\">log.eventDate</property>\n          </properties>\n          <widget>eventDate</widget>\n        </column>\n        <column>\n          <properties mode=\"any\">\n            <property name=\"useFirstWidgetLabelAsColumnHeader\">true</property>\n            <property name=\"sortPropertyName\">log.principalName</property>\n          </properties>\n          <widget>username</widget>\n        </column>\n        <column>\n          <properties mode=\"any\">\n            <property name=\"useFirstWidgetLabelAsColumnHeader\">true</property>\n            <property name=\"sortPropertyName\">log.category</property>\n          </properties>\n          <widget>eventCategory</widget>\n        </column>\n        <column>\n          <properties mode=\"any\">\n            <property name=\"useFirstWidgetLabelAsColumnHeader\">true</property>\n          </properties>\n          <widget>eventDoc</widget>\n        </column>\n        <column>\n          <properties mode=\"any\">\n            <property name=\"useFirstWidgetLabelAsColumnHeader\">true</property>\n          </properties>\n          <widget>eventComment</widget>\n        </column>\n        <column>\n          <properties mode=\"any\">\n            <property name=\"useFirstWidgetLabelAsColumnHeader\">true</property>\n          </properties>\n          <widget>eventLC</widget>\n        </column>\n      </columns>\n      <widget name=\"eventId\" type=\"text\">\n        <labels>\n          <label mode=\"any\">label.performedAction</label>\n        </labels>\n        <translated>true</translated>\n        <fields>\n          <field>data.eventId</field>\n        </fields>\n        <properties mode=\"any\">\n          <property name=\"localize\">true</property>\n        </properties>\n      </widget>\n      <widget name=\"eventDate\" type=\"datetime\">\n        <labels>\n          <label mode=\"any\">label.date</label>\n        </labels>\n        <translated>true</translated>\n        <fields>\n          <field>data.eventDate</field>\n        </fields>\n        <properties widgetMode=\"any\">\n          <property name=\"pattern\">#{nxu:basicDateAndTimeFormatter()}</property>\n          <property name=\"timezone\">#{timeZone}</property>\n        </properties>\n        <properties mode=\"csv\">\n          <property name=\"csv_formatMask\">#{nxu:basicDateFormatter()}</property>\n          <property name=\"csv_forceType\">date</property>\n        </properties>\n      </widget>\n      <widget name=\"username\" type=\"text\">\n        <labels>\n          <label mode=\"any\">label.username</label>\n        </labels>\n        <translated>true</translated>\n        <fields>\n          <field>data.principalName</field>\n        </fields>\n      </widget>\n      <widget name=\"eventCategory\" type=\"text\">\n        <labels>\n          <label mode=\"any\">label.category</label>\n        </labels>\n        <translated>true</translated>\n        <fields>\n          <field>data:category</field>\n        </fields>\n        <properties mode=\"any\">\n          <property name=\"localize\">true</property>\n        </properties>\n      </widget>\n      <widget name=\"eventDoc\" type=\"template\">\n        <labels>\n          <label mode=\"any\">label.document</label>\n        </labels>\n        <translated>true</translated>\n        <fields>\n          <field>data</field>\n        </fields>\n        <properties mode=\"any\">\n          <property name=\"template\">\n            /widgets/auditdoc_tenant_widget_template.xhtml\n          </property>\n        </properties>\n      </widget>\n      <widget name=\"eventComment\" type=\"text\">\n        <labels>\n          <label mode=\"any\">label.comment</label>\n        </labels>\n        <translated>true</translated>\n        <fields>\n          <field>data.comment</field>\n        </fields>\n      </widget>\n      <widget name=\"eventLC\" type=\"text\">\n        <labels>\n          <label mode=\"any\">label.lifecycle</label>\n        </labels>\n        <translated>true</translated>\n        <fields>\n          <field>data.docLifeCycle</field>\n        </fields>\n        <properties mode=\"any\">\n          <property name=\"localize\">true</property>\n        </properties>\n      </widget>\n    </layout>\n\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.multi.tenant/grp:org.nuxeo.ecm.multi/org.nuxeo.ecm.multi.tenant.jsf/org.nuxeo.ecm.multi.tenant.layouts",
          "name": "org.nuxeo.ecm.multi.tenant.layouts",
          "requirements": [
            "org.nuxeo.ecm.platform.forms.layouts.webapp.base"
          ],
          "resolutionOrder": 656,
          "services": [],
          "startOrder": 249,
          "version": "10.10-HF21",
          "xmlFileContent": "<?xml version='1.0' encoding='UTF-8'?>\n<component name=\"org.nuxeo.ecm.multi.tenant.layouts\">\n\n  <require>org.nuxeo.ecm.platform.forms.layouts.webapp.base</require>\n\n  <extension target=\"org.nuxeo.ecm.platform.forms.layout.WebLayoutManager\" point=\"widgets\">\n\n    <widget name=\"tenantId\" type=\"selectOneMenu\">\n      <labels>\n        <label mode=\"any\">label.tenant.id</label>\n      </labels>\n      <translated>true</translated>\n      <fields>\n        <field>user:tenantId</field>\n      </fields>\n      <widgetModes>\n        <mode value=\"editPassword\">********</mode>\n        <mode value=\"create\">#{nxu:test(multiTenantActions.isTenantIsolationEnabled()\n            and webActions.checkFilter('only_for_manager'), 'edit', 'hidden')}</mode>\n        <mode value=\"edit\">#{nxu:test(multiTenantActions.isTenantIsolationEnabled()\n            and webActions.checkFilter('only_for_manager'), 'edit', 'hidden')}</mode>\n        <mode value=\"view\">hidden</mode>\n      </widgetModes>\n      <selectOptions>\n        <option itemLabel=\"None\" itemValue=\"\"/>\n        <options value=\"#{multiTenantActions.tenants}\" var=\"doc\" itemValue=\"#{doc.tenant.id}\" itemLabel=\"#{doc.tenant.label}\"/>\n      </selectOptions>\n    </widget>\n    <widget name=\"tenantIdView\" type=\"text\">\n      <labels>\n        <label mode=\"any\">label.tenant.id</label>\n      </labels>\n      <translated>true</translated>\n      <fields>\n        <field>user:tenantId</field>\n      </fields>\n      <widgetModes>\n        <mode value=\"editPassword\">********</mode>\n        <mode value=\"create\">hidden</mode>\n        <mode value=\"edit\">hidden</mode>\n        <mode value=\"view\">#{nxu:test(multiTenantActions.isTenantIsolationEnabled()\n          and webActions.checkFilter('only_for_manager'), 'view', 'hidden')}</mode>\n      </widgetModes>\n    </widget>\n\n    <widget name=\"userTenantId\" type=\"layout\">\n      <properties mode=\"any\">\n        <property name=\"name\">user_tenant_id</property>\n      </properties>\n    </widget>\n\n  </extension>\n\n  <extension target=\"org.nuxeo.ecm.platform.actions.ActionService\" point=\"actions\">\n\n    <action id=\"userTenantId\" type=\"widget\" order=\"100\">\n      <category>USER_ADDITIONAL_WIDGETS</category>\n      <properties>\n        <property name=\"widgetName\">userTenantId</property>\n      </properties>\n    </action>\n\n  </extension>\n\n  <extension target=\"org.nuxeo.ecm.platform.forms.layout.WebLayoutManager\" point=\"layouts\">\n\n    <layout name=\"user_tenant_id\">\n      <templates>\n        <template mode=\"any\">\n          /layouts/layout_default_template.xhtml\n        </template>\n      </templates>\n      <rows>\n        <row>\n          <widget>tenantId</widget>\n        </row>\n        <!-- hack because the selectOneMenu widget display nothing in 'view' mode  -->\n        <row>\n          <widget>tenantIdView</widget>\n        </row>\n      </rows>\n    </layout>\n\n   <layout name=\"multi_tenant_content_view_configuration\">\n      <templates>\n        <template mode=\"any\">\n          /layouts/layout_default_template.xhtml\n        </template>\n      </templates>\n      <rows>\n        <row>\n          <widget>content_view_selection</widget>\n        </row>\n      </rows>\n    </layout>\n\n    <layout name=\"multi_tenant_ui_types_configuration\">\n      <templates>\n        <template mode=\"any\">\n          /layouts/layout_default_template.xhtml\n        </template>\n      </templates>\n      <rows>\n        <row>\n          <widget>ui_types_selection</widget>\n        </row>\n        <row>\n          <widget>deny_all_types</widget>\n        </row>\n        <row>\n          <widget>default_type</widget>\n        </row>\n      </rows>\n    </layout>\n\n   <layout name=\"multi_tenant_search_configuration\">\n      <templates>\n        <template mode=\"any\">\n          /layouts/layout_default_template.xhtml\n        </template>\n      </templates>\n      <rows>\n        <row>\n          <widget>search_content_views_selection</widget>\n        </row>\n      </rows>\n    </layout>\n\n    <layout name=\"tenant_configuration\">\n      <templates>\n        <template mode=\"any\">\n          /layouts/layout_default_template.xhtml\n        </template>\n      </templates>\n      <rows>\n        <row>\n          <widget>tenant_id</widget>\n        </row>\n        <row>\n          <widget>tenant_administrators</widget>\n        </row>\n      </rows>\n      <widget name=\"tenant_id\" type=\"text\">\n        <labels>\n          <label mode=\"any\">label.tenant.id</label>\n        </labels>\n        <translated>true</translated>\n        <fields>\n          <field>tenantconfig:tenantId</field>\n        </fields>\n        <properties widgetMode=\"edit\">\n          <property name=\"styleClass\">dataInputText</property>\n          <property name=\"required\">true</property>\n        </properties>\n        <widgetModes>\n          <mode value=\"edit\">\n            #{nxu:test(multiTenantActions.isTenantIsolationEnabled(), 'view', 'hidden')}\n          </mode>\n        </widgetModes>\n      </widget>\n      <widget name=\"tenant_administrators\" type=\"template\">\n        <labels>\n          <label mode=\"any\">label.tenant.administrators</label>\n        </labels>\n        <translated>true</translated>\n        <fields>\n          <field>tenantconfig:administrators</field>\n        </fields>\n        <widgetModes>\n          <mode value=\"create\">\n            hidden\n          </mode>\n          <mode value=\"edit\">\n            #{nxu:test(multiTenantActions.isTenantIsolationEnabled(), 'edit', 'hidden')}\n          </mode>\n        </widgetModes>\n        <properties widgetMode=\"edit\">\n          <property name=\"required\">true</property>\n          <property name=\"userSuggestionSearchType\">USER_TYPE</property>\n          <property name=\"minChars\">3</property>\n          <property name=\"hideHelpLabel\">true</property>\n        </properties>\n        <properties widgetMode=\"any\">\n          <property name=\"template\">/widgets/tenant_administrators_widget.xhtml</property>\n        </properties>\n      </widget>\n    </layout>\n\n    <layout name=\"tenant_event_listing\">\n      <templates>\n        <template mode=\"any\">/layouts/layout_listing_ajax_template.xhtml\n        </template>\n        <template mode=\"csv\">/layouts/layout_listing_csv_template.xhtml\n        </template>\n        <template mode=\"pdf\">/layouts/layout_listing_pdf_template.xhtml\n        </template>\n      </templates>\n      <properties mode=\"any\">\n        <property name=\"showListingHeader\">true</property>\n        <property name=\"showRowEvenOddClass\">true</property>\n      </properties>\n      <columns>\n        <column>\n          <properties mode=\"any\">\n            <property name=\"useFirstWidgetLabelAsColumnHeader\">true</property>\n            <property name=\"sortPropertyName\">eventId</property>\n          </properties>\n          <widget>eventId</widget>\n        </column>\n        <column>\n          <properties mode=\"any\">\n            <property name=\"useFirstWidgetLabelAsColumnHeader\">true</property>\n            <property name=\"sortPropertyName\">log.eventDate</property>\n          </properties>\n          <widget>eventDate</widget>\n        </column>\n        <column>\n          <properties mode=\"any\">\n            <property name=\"useFirstWidgetLabelAsColumnHeader\">true</property>\n            <property name=\"sortPropertyName\">log.principalName</property>\n          </properties>\n          <widget>username</widget>\n        </column>\n        <column>\n          <properties mode=\"any\">\n            <property name=\"useFirstWidgetLabelAsColumnHeader\">true</property>\n            <property name=\"sortPropertyName\">log.category</property>\n          </properties>\n          <widget>eventCategory</widget>\n        </column>\n        <column>\n          <properties mode=\"any\">\n            <property name=\"useFirstWidgetLabelAsColumnHeader\">true</property>\n          </properties>\n          <widget>eventDoc</widget>\n        </column>\n        <column>\n          <properties mode=\"any\">\n            <property name=\"useFirstWidgetLabelAsColumnHeader\">true</property>\n          </properties>\n          <widget>eventComment</widget>\n        </column>\n        <column>\n          <properties mode=\"any\">\n            <property name=\"useFirstWidgetLabelAsColumnHeader\">true</property>\n          </properties>\n          <widget>eventLC</widget>\n        </column>\n      </columns>\n      <widget name=\"eventId\" type=\"text\">\n        <labels>\n          <label mode=\"any\">label.performedAction</label>\n        </labels>\n        <translated>true</translated>\n        <fields>\n          <field>data.eventId</field>\n        </fields>\n        <properties mode=\"any\">\n          <property name=\"localize\">true</property>\n        </properties>\n      </widget>\n      <widget name=\"eventDate\" type=\"datetime\">\n        <labels>\n          <label mode=\"any\">label.date</label>\n        </labels>\n        <translated>true</translated>\n        <fields>\n          <field>data.eventDate</field>\n        </fields>\n        <properties widgetMode=\"any\">\n          <property name=\"pattern\">#{nxu:basicDateAndTimeFormatter()}</property>\n          <property name=\"timezone\">#{timeZone}</property>\n        </properties>\n        <properties mode=\"csv\">\n          <property name=\"csv_formatMask\">#{nxu:basicDateFormatter()}</property>\n          <property name=\"csv_forceType\">date</property>\n        </properties>\n      </widget>\n      <widget name=\"username\" type=\"text\">\n        <labels>\n          <label mode=\"any\">label.username</label>\n        </labels>\n        <translated>true</translated>\n        <fields>\n          <field>data.principalName</field>\n        </fields>\n      </widget>\n      <widget name=\"eventCategory\" type=\"text\">\n        <labels>\n          <label mode=\"any\">label.category</label>\n        </labels>\n        <translated>true</translated>\n        <fields>\n          <field>data:category</field>\n        </fields>\n        <properties mode=\"any\">\n          <property name=\"localize\">true</property>\n        </properties>\n      </widget>\n      <widget name=\"eventDoc\" type=\"template\">\n        <labels>\n          <label mode=\"any\">label.document</label>\n        </labels>\n        <translated>true</translated>\n        <fields>\n          <field>data</field>\n        </fields>\n        <properties mode=\"any\">\n          <property name=\"template\">\n            /widgets/auditdoc_tenant_widget_template.xhtml\n          </property>\n        </properties>\n      </widget>\n      <widget name=\"eventComment\" type=\"text\">\n        <labels>\n          <label mode=\"any\">label.comment</label>\n        </labels>\n        <translated>true</translated>\n        <fields>\n          <field>data.comment</field>\n        </fields>\n      </widget>\n      <widget name=\"eventLC\" type=\"text\">\n        <labels>\n          <label mode=\"any\">label.lifecycle</label>\n        </labels>\n        <translated>true</translated>\n        <fields>\n          <field>data.docLifeCycle</field>\n        </fields>\n        <properties mode=\"any\">\n          <property name=\"localize\">true</property>\n        </properties>\n      </widget>\n    </layout>\n\n  </extension>\n\n</component>",
          "xmlFileName": "/OSGI-INF/layouts-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.platform.actions.ActionService--actions",
              "hierarchyPath": "/grp:org.nuxeo.multi.tenant/grp:org.nuxeo.ecm.multi/org.nuxeo.ecm.multi.tenant.jsf/org.nuxeo.ecm.multi.tenant.actions/Contributions/org.nuxeo.ecm.multi.tenant.actions--actions",
              "id": "org.nuxeo.ecm.multi.tenant.actions--actions",
              "registrationOrder": 40,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.platform.actions.ActionService",
                "name": "org.nuxeo.ecm.platform.actions.ActionService",
                "type": "service"
              },
              "version": "10.10-HF21",
              "xml": "<extension point=\"actions\" target=\"org.nuxeo.ecm.platform.actions.ActionService\">\n\n    <!-- Admin Center -->\n    <action id=\"TenantAdministration\" label=\"label.multi.tenant.isolation\" link=\"/incl/tenant/tenant_administration.xhtml\" order=\"150\" type=\"admin_rest_document_link\">\n      <category>NUXEO_ADMIN</category>\n      <filter-id>only_for_manager</filter-id>\n    </action>\n\n    <!-- Hide Manage tab for tenants -->\n    <action id=\"TAB_MANAGE\">\n      <filter-id>denyForTenantConfig</filter-id>\n    </action>\n    <!-- Hide Permissions tab for tenants -->\n    <action id=\"TAB_PERMISSIONS\">\n      <filter-id>denyForTenantConfig</filter-id>\n    </action>\n\n    <action id=\"TAB_CONTENT_HISTORY\">\n      <filter-id>denyForTenantConfig</filter-id>\n    </action>\n\n    <!-- Tenant Administration tabs -->\n    <action icon=\"/icons/file.gif\" id=\"TAB_TENANT_ADMINISTRATION\" label=\"action.view.manage\" order=\"240\" type=\"rest_document_link\">\n      <category>VIEW_ACTION_LIST</category>\n      <filter-id>manage</filter-id>\n      <filter-id>allowForTenantConfig</filter-id>\n      <filter id=\"TAB_TENANT_ADMINISTRATION_has_subtabs\">\n        <rule grant=\"false\">\n          <condition>\n            #{webActions.getActionsList('TAB_TENANT_ADMINISTRATION_sub_tab').isEmpty()}\n          </condition>\n        </rule>\n      </filter>\n      <properties>\n        <property name=\"ajaxSupport\">true</property>\n        <property name=\"link\">/incl/tabs/document_manage.xhtml</property>\n      </properties>\n    </action>\n\n    <action icon=\"/icons/file.gif\" id=\"TAB_TENANT_CONFIGURATION\" label=\"label.tenant.configuration\" link=\"/incl/tabs/tenant_configuration.xhtml\" order=\"40\">\n      <category>TAB_TENANT_ADMINISTRATION_sub_tab</category>\n      <filter-id>tenantAdministrators</filter-id>\n      <filter-id>allowForTenantConfig</filter-id>\n      <properties>\n        <property name=\"ajaxSupport\">true</property>\n      </properties>\n    </action>\n\n    <action icon=\"/icons/file.gif\" id=\"TAB_TENANT_RIGHTS\" label=\"action.view.rights\" link=\"/incl/tabs/document_rights.xhtml\" order=\"50\">\n      <category>TAB_TENANT_ADMINISTRATION_sub_tab</category>\n      <filter-id>rights</filter-id>\n      <filter-id>tenantAdministrators</filter-id>\n      <filter-id>allowForTenantConfig</filter-id>\n      <properties>\n        <property name=\"ajaxSupport\">true</property>\n      </properties>\n    </action>\n\n    <action icon=\"/icons/file.gif\" id=\"TAB_TENANT_LOCAL_CONFIGURATION\" label=\"action.view.local.configuration\" link=\"/incl/tabs/local_configuration.xhtml\" order=\"70\">\n      <category>TAB_TENANT_ADMINISTRATION_sub_tab</category>\n      <filter-id>has_local_configuration_available</filter-id>\n      <filter-id>tenantAdministrators</filter-id>\n      <filter-id>allowForTenantConfig</filter-id>\n      <properties>\n        <property name=\"ajaxSupport\">true</property>\n      </properties>\n    </action>\n\n    <action icon=\"/icons/file.gif\" id=\"TAB_TENANT_HISTORY\" label=\"action.view.tenant.history\" link=\"/incl/tabs/tenant_history.xhtml\" order=\"100\">\n      <category>TAB_TENANT_ADMINISTRATION_sub_tab</category>\n      <filter-id>tenantAdministrators</filter-id>\n      <filter-id>allowForTenantConfig</filter-id>\n      <properties>\n        <property name=\"ajaxSupport\">true</property>\n      </properties>\n    </action>\n\n    <action icon=\"/icons/file.gif\" id=\"TAB_TENANT_TRASH_CONTENT\" label=\"action.view.trash.content\" link=\"/incl/tabs/document_trash_content.xhtml\" order=\"200\">\n      <category>TAB_TENANT_ADMINISTRATION_sub_tab</category>\n      <filter-id>allowForTenantConfig</filter-id>\n      <filter-id>tenantAdministrators</filter-id>\n      <filter id=\"viewTrash\">\n        <rule grant=\"true\">\n          <permission>Manage everything</permission>\n          <facet>Folderish</facet>\n          <condition>#{deleteActions.trashManagementEnabled}</condition>\n        </rule>\n      </filter>\n      <properties>\n        <property name=\"ajaxSupport\">true</property>\n      </properties>\n    </action>\n\n  </extension>"
            },
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.platform.actions.ActionService--filters",
              "hierarchyPath": "/grp:org.nuxeo.multi.tenant/grp:org.nuxeo.ecm.multi/org.nuxeo.ecm.multi.tenant.jsf/org.nuxeo.ecm.multi.tenant.actions/Contributions/org.nuxeo.ecm.multi.tenant.actions--filters",
              "id": "org.nuxeo.ecm.multi.tenant.actions--filters",
              "registrationOrder": 24,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.platform.actions.ActionService",
                "name": "org.nuxeo.ecm.platform.actions.ActionService",
                "type": "service"
              },
              "version": "10.10-HF21",
              "xml": "<extension point=\"filters\" target=\"org.nuxeo.ecm.platform.actions.ActionService\">\n\n    <filter id=\"allowForTenantConfig\">\n      <rule grant=\"true\">\n        <facet>TenantConfig</facet>\n      </rule>\n    </filter>\n\n    <filter id=\"denyForTenantConfig\">\n      <rule grant=\"false\">\n        <facet>TenantConfig</facet>\n      </rule>\n    </filter>\n\n    <filter id=\"tenantAdministrators\">\n      <rule grant=\"true\">\n        <condition>#{currentUser.administrator}</condition>\n        <condition>#{currentUser.isMemberOf('powerusers')}</condition>\n      </rule>\n    </filter>\n\n    <filter id=\"readOnlyDirectory\">\n      <rule grant=\"true\">\n        <condition>#{multiTenantActions.isReadOnlyDirectory(directoryName)}</condition>\n      </rule>\n    </filter>\n\n  </extension>"
            },
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.platform.actions.ActionService--typeCompatibility",
              "hierarchyPath": "/grp:org.nuxeo.multi.tenant/grp:org.nuxeo.ecm.multi/org.nuxeo.ecm.multi.tenant.jsf/org.nuxeo.ecm.multi.tenant.actions/Contributions/org.nuxeo.ecm.multi.tenant.actions--typeCompatibility",
              "id": "org.nuxeo.ecm.multi.tenant.actions--typeCompatibility",
              "registrationOrder": 2,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.platform.actions.ActionService",
                "name": "org.nuxeo.ecm.platform.actions.ActionService",
                "type": "service"
              },
              "version": "10.10-HF21",
              "xml": "<extension point=\"typeCompatibility\" target=\"org.nuxeo.ecm.platform.actions.ActionService\">\n\n    <typeCompatibility type=\"rest_document_link\">\n      <category>TAB_TENANT_ADMINISTRATION_sub_tab</category>\n    </typeCompatibility>\n\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.multi.tenant/grp:org.nuxeo.ecm.multi/org.nuxeo.ecm.multi.tenant.jsf/org.nuxeo.ecm.multi.tenant.actions",
          "name": "org.nuxeo.ecm.multi.tenant.actions",
          "requirements": [
            "org.nuxeo.ecm.directory.actions",
            "org.nuxeo.ecm.platform.audit.web",
            "org.nuxeo.ecm.platform.actions"
          ],
          "resolutionOrder": 697,
          "services": [],
          "startOrder": 239,
          "version": "10.10-HF21",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.multi.tenant.actions\">\n\n  <require>org.nuxeo.ecm.platform.actions</require>\n  <require>org.nuxeo.ecm.platform.audit.web</require>\n  <require>org.nuxeo.ecm.directory.actions</require>\n\n  <extension target=\"org.nuxeo.ecm.platform.actions.ActionService\"\n    point=\"actions\">\n\n    <!-- Admin Center -->\n    <action id=\"TenantAdministration\" link=\"/incl/tenant/tenant_administration.xhtml\"\n      type=\"admin_rest_document_link\"\n      label=\"label.multi.tenant.isolation\" order=\"150\">\n      <category>NUXEO_ADMIN</category>\n      <filter-id>only_for_manager</filter-id>\n    </action>\n\n    <!-- Hide Manage tab for tenants -->\n    <action id=\"TAB_MANAGE\">\n      <filter-id>denyForTenantConfig</filter-id>\n    </action>\n    <!-- Hide Permissions tab for tenants -->\n    <action id=\"TAB_PERMISSIONS\">\n      <filter-id>denyForTenantConfig</filter-id>\n    </action>\n\n    <action id=\"TAB_CONTENT_HISTORY\">\n      <filter-id>denyForTenantConfig</filter-id>\n    </action>\n\n    <!-- Tenant Administration tabs -->\n    <action id=\"TAB_TENANT_ADMINISTRATION\" type=\"rest_document_link\" order=\"240\"\n      label=\"action.view.manage\" icon=\"/icons/file.gif\">\n      <category>VIEW_ACTION_LIST</category>\n      <filter-id>manage</filter-id>\n      <filter-id>allowForTenantConfig</filter-id>\n      <filter id=\"TAB_TENANT_ADMINISTRATION_has_subtabs\">\n        <rule grant=\"false\">\n          <condition>\n            #{webActions.getActionsList('TAB_TENANT_ADMINISTRATION_sub_tab').isEmpty()}\n          </condition>\n        </rule>\n      </filter>\n      <properties>\n        <property name=\"ajaxSupport\">true</property>\n        <property name=\"link\">/incl/tabs/document_manage.xhtml</property>\n      </properties>\n    </action>\n\n    <action id=\"TAB_TENANT_CONFIGURATION\" link=\"/incl/tabs/tenant_configuration.xhtml\"\n      order=\"40\" label=\"label.tenant.configuration\" icon=\"/icons/file.gif\">\n      <category>TAB_TENANT_ADMINISTRATION_sub_tab</category>\n      <filter-id>tenantAdministrators</filter-id>\n      <filter-id>allowForTenantConfig</filter-id>\n      <properties>\n        <property name=\"ajaxSupport\">true</property>\n      </properties>\n    </action>\n\n    <action id=\"TAB_TENANT_RIGHTS\" link=\"/incl/tabs/document_rights.xhtml\"\n      order=\"50\" label=\"action.view.rights\" icon=\"/icons/file.gif\">\n      <category>TAB_TENANT_ADMINISTRATION_sub_tab</category>\n      <filter-id>rights</filter-id>\n      <filter-id>tenantAdministrators</filter-id>\n      <filter-id>allowForTenantConfig</filter-id>\n      <properties>\n        <property name=\"ajaxSupport\">true</property>\n      </properties>\n    </action>\n\n    <action id=\"TAB_TENANT_LOCAL_CONFIGURATION\" link=\"/incl/tabs/local_configuration.xhtml\"\n      order=\"70\" label=\"action.view.local.configuration\" icon=\"/icons/file.gif\">\n      <category>TAB_TENANT_ADMINISTRATION_sub_tab</category>\n      <filter-id>has_local_configuration_available</filter-id>\n      <filter-id>tenantAdministrators</filter-id>\n      <filter-id>allowForTenantConfig</filter-id>\n      <properties>\n        <property name=\"ajaxSupport\">true</property>\n      </properties>\n    </action>\n\n    <action id=\"TAB_TENANT_HISTORY\" link=\"/incl/tabs/tenant_history.xhtml\" label=\"action.view.tenant.history\"\n      icon=\"/icons/file.gif\" order=\"100\">\n      <category>TAB_TENANT_ADMINISTRATION_sub_tab</category>\n      <filter-id>tenantAdministrators</filter-id>\n      <filter-id>allowForTenantConfig</filter-id>\n      <properties>\n        <property name=\"ajaxSupport\">true</property>\n      </properties>\n    </action>\n\n    <action id=\"TAB_TENANT_TRASH_CONTENT\" link=\"/incl/tabs/document_trash_content.xhtml\"\n      order=\"200\" label=\"action.view.trash.content\" icon=\"/icons/file.gif\">\n      <category>TAB_TENANT_ADMINISTRATION_sub_tab</category>\n      <filter-id>allowForTenantConfig</filter-id>\n      <filter-id>tenantAdministrators</filter-id>\n      <filter id=\"viewTrash\">\n        <rule grant=\"true\">\n          <permission>Manage everything</permission>\n          <facet>Folderish</facet>\n          <condition>#{deleteActions.trashManagementEnabled}</condition>\n        </rule>\n      </filter>\n      <properties>\n        <property name=\"ajaxSupport\">true</property>\n      </properties>\n    </action>\n\n  </extension>\n\n  <extension target=\"org.nuxeo.ecm.platform.actions.ActionService\"\n    point=\"filters\">\n\n    <filter id=\"allowForTenantConfig\">\n      <rule grant=\"true\">\n        <facet>TenantConfig</facet>\n      </rule>\n    </filter>\n\n    <filter id=\"denyForTenantConfig\">\n      <rule grant=\"false\">\n        <facet>TenantConfig</facet>\n      </rule>\n    </filter>\n\n    <filter id=\"tenantAdministrators\">\n      <rule grant=\"true\">\n        <condition>#{currentUser.administrator}</condition>\n        <condition>#{currentUser.isMemberOf('powerusers')}</condition>\n      </rule>\n    </filter>\n\n    <filter id=\"readOnlyDirectory\">\n      <rule grant=\"true\">\n        <condition>#{multiTenantActions.isReadOnlyDirectory(directoryName)}</condition>\n      </rule>\n    </filter>\n\n  </extension>\n\n  <extension target=\"org.nuxeo.ecm.platform.actions.ActionService\"\n    point=\"typeCompatibility\">\n\n    <typeCompatibility type=\"rest_document_link\">\n      <category>TAB_TENANT_ADMINISTRATION_sub_tab</category>\n    </typeCompatibility>\n\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/actions-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.directory.ui.DirectoryUIManager--directories",
              "hierarchyPath": "/grp:org.nuxeo.multi.tenant/grp:org.nuxeo.ecm.multi/org.nuxeo.ecm.multi.tenant.jsf/org.nuxeo.ecm.multi.tenant.directoriesUI/Contributions/org.nuxeo.ecm.multi.tenant.directoriesUI--directories",
              "id": "org.nuxeo.ecm.multi.tenant.directoriesUI--directories",
              "registrationOrder": 1,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.directory.ui.DirectoryUIManager",
                "name": "org.nuxeo.ecm.directory.ui.DirectoryUIManager",
                "type": "service"
              },
              "version": "10.10-HF21",
              "xml": "<extension point=\"directories\" target=\"org.nuxeo.ecm.directory.ui.DirectoryUIManager\">\n\n    <directory layout=\"multi_tenant_vocabulary\" name=\"topic\" sortField=\"label\">\n      <deleteConstraint class=\"org.nuxeo.ecm.directory.api.ui.HierarchicalDirectoryUIDeleteConstraint\">\n        <property name=\"targetDirectory\">subtopic</property>\n        <property name=\"targetDirectoryField\">parent</property>\n      </deleteConstraint>\n    </directory>\n    <directory layout=\"multi_tenant_subtopic_vocabulary\" name=\"subtopic\" sortField=\"parent\"/>\n\n    <directory layout=\"multi_tenant_l10ncoverage_vocabulary\" name=\"l10ncoverage\" sortField=\"id\">\n      <deleteConstraint class=\"org.nuxeo.ecm.directory.api.ui.HierarchicalDirectoryUIDeleteConstraint\">\n        <property name=\"targetDirectory\">l10ncoverage</property>\n        <property name=\"targetDirectoryField\">parent</property>\n      </deleteConstraint>\n    </directory>\n    <directory layout=\"multi_tenant_l10nsubjects_vocabulary\" name=\"l10nsubjects\" sortField=\"id\">\n      <deleteConstraint class=\"org.nuxeo.ecm.directory.api.ui.HierarchicalDirectoryUIDeleteConstraint\">\n        <property name=\"targetDirectory\">l10nsubjects</property>\n        <property name=\"targetDirectoryField\">parent</property>\n      </deleteConstraint>\n    </directory>\n  </extension>"
            },
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.platform.forms.layout.WebLayoutManager--widgets",
              "hierarchyPath": "/grp:org.nuxeo.multi.tenant/grp:org.nuxeo.ecm.multi/org.nuxeo.ecm.multi.tenant.jsf/org.nuxeo.ecm.multi.tenant.directoriesUI/Contributions/org.nuxeo.ecm.multi.tenant.directoriesUI--widgets",
              "id": "org.nuxeo.ecm.multi.tenant.directoriesUI--widgets",
              "registrationOrder": 30,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.platform.forms.layout.WebLayoutManager",
                "name": "org.nuxeo.ecm.platform.forms.layout.WebLayoutManager",
                "type": "service"
              },
              "version": "10.10-HF21",
              "xml": "<extension point=\"widgets\" target=\"org.nuxeo.ecm.platform.forms.layout.WebLayoutManager\">\n\n    <widget name=\"multi_tenant_vocabulary_id\" type=\"text\">\n      <labels>\n        <label mode=\"any\">label.vocabulary.entry.id</label>\n      </labels>\n      <translated>true</translated>\n      <fields>\n        <field>multitenantvocabulary:id</field>\n      </fields>\n      <widgetModes>\n        <mode value=\"edit\">view</mode>\n      </widgetModes>\n      <properties widgetMode=\"edit\">\n        <property name=\"required\">true</property>\n      </properties>\n    </widget>\n\n    <widget name=\"multi_tenant_vocabulary_label\" type=\"text\">\n      <labels>\n        <label mode=\"any\">label.vocabulary.entry.label</label>\n      </labels>\n      <translated>true</translated>\n      <fields>\n        <field>multitenantvocabulary:label</field>\n      </fields>\n      <properties widgetMode=\"edit\">\n        <property name=\"size\">50</property>\n      </properties>\n    </widget>\n\n    <widget name=\"multi_tenant_vocabulary_obsolete\" type=\"template\">\n      <labels>\n        <label mode=\"any\">label.vocabulary.entry.obsolete</label>\n      </labels>\n      <translated>true</translated>\n      <fields>\n        <field>multitenantvocabulary:obsolete</field>\n      </fields>\n      <properties mode=\"any\">\n        <property name=\"template\">\n          /widgets/integer_yes_no_widget_template.xhtml\n        </property>\n      </properties>\n    </widget>\n\n    <widget name=\"multi_tenant_vocabulary_order\" type=\"int\">\n      <labels>\n        <label mode=\"any\">label.vocabulary.entry.order</label>\n      </labels>\n      <translated>true</translated>\n      <fields>\n        <field>multitenantvocabulary:ordering</field>\n      </fields>\n      <properties widgetMode=\"edit\">\n        <property name=\"size\">10</property>\n      </properties>\n    </widget>\n\n    <widget name=\"multi_tenant_xvocabulary_id\" type=\"text\">\n      <labels>\n        <label mode=\"any\">label.vocabulary.entry.id</label>\n      </labels>\n      <translated>true</translated>\n      <fields>\n        <field>multitenantxvocabulary:id</field>\n      </fields>\n      <widgetModes>\n        <mode value=\"edit\">view</mode>\n      </widgetModes>\n      <properties widgetMode=\"edit\">\n        <property name=\"required\">true</property>\n      </properties>\n    </widget>\n\n    <widget name=\"multi_tenant_xvocabulary_label\" type=\"text\">\n      <labels>\n        <label mode=\"any\">label.vocabulary.entry.label</label>\n      </labels>\n      <translated>true</translated>\n      <fields>\n        <field>multitenantxvocabulary:label</field>\n      </fields>\n      <properties widgetMode=\"edit\">\n        <property name=\"size\">50</property>\n      </properties>\n    </widget>\n\n    <widget name=\"multi_tenant_xvocabulary_obsolete\" type=\"template\">\n      <labels>\n        <label mode=\"any\">label.vocabulary.entry.obsolete</label>\n      </labels>\n      <translated>true</translated>\n      <fields>\n        <field>multitenantxvocabulary:obsolete</field>\n      </fields>\n      <properties mode=\"any\">\n        <property name=\"template\">\n          /widgets/integer_yes_no_widget_template.xhtml\n        </property>\n      </properties>\n    </widget>\n\n    <widget name=\"multi_tenant_xvocabulary_order\" type=\"int\">\n      <labels>\n        <label mode=\"any\">label.vocabulary.entry.order</label>\n      </labels>\n      <translated>true</translated>\n      <fields>\n        <field>multitenantxvocabulary:ordering</field>\n      </fields>\n      <properties widgetMode=\"edit\">\n        <property name=\"size\">10</property>\n      </properties>\n    </widget>\n\n    <widget name=\"multi_tenant_l10nvocabulary_id\" type=\"text\">\n      <labels>\n        <label mode=\"any\">label.vocabulary.entry.id</label>\n      </labels>\n      <translated>true</translated>\n      <fields>\n        <field>multitenantl10nvocabulary:id</field>\n      </fields>\n      continent\n      <widgetModes>\n        <mode value=\"edit\">view</mode>\n      </widgetModes>\n      <properties widgetMode=\"edit\">\n        <property name=\"required\">true</property>\n      </properties>\n    </widget>\n\n    <widget name=\"multi_tenant_l10nvocabulary_label_fr\" type=\"text\">\n      <labels>\n        <label mode=\"any\">label.vocabulary.l10n.entry.label.french</label>\n      </labels>\n      <translated>true</translated>\n      <fields>\n        <field>multitenantl10nvocabulary:label_fr</field>\n      </fields>\n      <properties widgetMode=\"edit\">\n        <property name=\"size\">50</property>\n      </properties>\n    </widget>\n\n    <widget name=\"multi_tenant_l10nvocabulary_label_en\" type=\"text\">\n      <labels>\n        <label mode=\"any\">label.vocabulary.l10n.entry.label.english</label>\n      </labels>\n      <translated>true</translated>\n      <fields>\n        <field>multitenantl10nvocabulary:label_en</field>\n      </fields>\n      <properties widgetMode=\"edit\">\n        <property name=\"size\">50</property>\n      </properties>\n    </widget>\n\n    <widget name=\"multi_tenant_l10nvocabulary_obsolete\" type=\"template\">\n      <labels>\n        <label mode=\"any\">label.vocabulary.entry.obsolete</label>\n      </labels>\n      <translated>true</translated>\n      <fields>\n        <field>multitenantl10nvocabulary:obsolete</field>\n      </fields>\n      <properties mode=\"any\">\n        <property name=\"template\">\n          /widgets/integer_yes_no_widget_template.xhtml\n        </property>\n      </properties>\n    </widget>\n\n    <widget name=\"multi_tenant_l10nvocabulary_order\" type=\"int\">\n      <labels>\n        <label mode=\"any\">label.vocabulary.entry.order</label>\n      </labels>\n      <translated>true</translated>\n      <fields>\n        <field>multitenantl10nvocabulary:ordering</field>\n      </fields>\n      <properties widgetMode=\"edit\">\n        <property name=\"size\">10</property>\n      </properties>\n    </widget>\n\n    <widget name=\"multi_tenant_l10nxvocabulary_id\" type=\"text\">\n      <labels>\n        <label mode=\"any\">label.vocabulary.entry.id</label>\n      </labels>\n      <translated>true</translated>\n      <fields>\n        <field>multitenantl10nxvocabulary:id</field>\n      </fields>\n      <widgetModes>\n        <mode value=\"edit\">view</mode>\n      </widgetModes>\n      <properties widgetMode=\"edit\">\n        <property name=\"required\">true</property>\n      </properties>\n    </widget>\n\n    <widget name=\"multi_tenant_l10nxvocabulary_label_fr\" type=\"text\">\n      <labels>\n        <label mode=\"any\">label.vocabulary.l10n.entry.label.french</label>\n      </labels>\n      <translated>true</translated>\n      <fields>\n        <field>multitenantl10nxvocabulary:label_fr</field>\n      </fields>\n      <properties widgetMode=\"edit\">\n        <property name=\"size\">50</property>\n      </properties>\n    </widget>\n\n    <widget name=\"multi_tenant_l10nxvocabulary_label_en\" type=\"text\">\n      <labels>\n        <label mode=\"any\">label.vocabulary.l10n.entry.label.english</label>\n      </labels>\n      <translated>true</translated>\n      <fields>\n        <field>multitenantl10nxvocabulary:label_en</field>\n      </fields>\n      <properties widgetMode=\"edit\">\n        <property name=\"size\">50</property>\n      </properties>\n    </widget>\n\n    <widget name=\"multi_tenant_l10nxvocabulary_obsolete\" type=\"template\">\n      <labels>\n        <label mode=\"any\">label.vocabulary.entry.obsolete</label>\n      </labels>\n      <translated>true</translated>\n      <fields>\n        <field>multitenantl10nxvocabulary:obsolete</field>\n      </fields>\n      <properties mode=\"any\">\n        <property name=\"template\">\n          /widgets/integer_yes_no_widget_template.xhtml\n        </property>\n      </properties>\n    </widget>\n\n    <widget name=\"multi_tenant_l10nxvocabulary_order\" type=\"int\">\n      <labels>\n        <label mode=\"any\">label.vocabulary.entry.order</label>\n      </labels>\n      <translated>true</translated>\n      <fields>\n        <field>multitenantl10nxvocabulary:ordering</field>\n      </fields>\n      <properties widgetMode=\"edit\">\n        <property name=\"size\">10</property>\n      </properties>\n    </widget>\n  </extension>"
            },
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.platform.forms.layout.WebLayoutManager--layouts",
              "hierarchyPath": "/grp:org.nuxeo.multi.tenant/grp:org.nuxeo.ecm.multi/org.nuxeo.ecm.multi.tenant.jsf/org.nuxeo.ecm.multi.tenant.directoriesUI/Contributions/org.nuxeo.ecm.multi.tenant.directoriesUI--layouts",
              "id": "org.nuxeo.ecm.multi.tenant.directoriesUI--layouts",
              "registrationOrder": 29,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.platform.forms.layout.WebLayoutManager",
                "name": "org.nuxeo.ecm.platform.forms.layout.WebLayoutManager",
                "type": "service"
              },
              "version": "10.10-HF21",
              "xml": "<extension point=\"layouts\" target=\"org.nuxeo.ecm.platform.forms.layout.WebLayoutManager\">\n\n    <layout name=\"multi_tenant_vocabulary\">\n      <templates>\n        <template mode=\"any\">\n          /directory/directory_layout_template.xhtml\n        </template>\n      </templates>\n      <rows>\n        <row>\n          <widget>multi_tenant_vocabulary_id</widget>\n        </row>\n        <row>\n          <widget>multi_tenant_vocabulary_label</widget>\n        </row>\n        <row>\n          <widget>multi_tenant_vocabulary_obsolete</widget>\n        </row>\n        <row>\n          <widget>multi_tenant_vocabulary_order</widget>\n        </row>\n      </rows>\n    </layout>\n\n    <layout name=\"multi_tenant_subtopic_vocabulary\">\n      <templates>\n        <template mode=\"any\">\n          /directory/directory_layout_template.xhtml\n        </template>\n      </templates>\n      <rows>\n        <row>\n          <widget>parent</widget>\n        </row>\n        <row>\n          <widget>multi_tenant_xvocabulary_id</widget>\n        </row>\n        <row>\n          <widget>multi_tenant_xvocabulary_label</widget>\n        </row>\n        <row>\n          <widget>multi_tenant_xvocabulary_obsolete</widget>\n        </row>\n        <row>\n          <widget>multi_tenant_xvocabulary_order</widget>\n        </row>\n      </rows>\n      <widget name=\"parent\" type=\"selectOneDirectory\">\n        <labels>\n          <label mode=\"any\">label.vocabulary.entry.parent</label>\n        </labels>\n        <translated>true</translated>\n        <fields>\n          <field>multitenantxvocabulary:parent</field>\n        </fields>\n        <properties mode=\"any\">\n          <property name=\"directoryName\">topic</property>\n          <property name=\"localize\">true</property>\n        </properties>\n        <properties widgetMode=\"edit\">\n          <property name=\"required\">true</property>\n        </properties>\n      </widget>\n    </layout>\n\n    <layout name=\"multi_tenant_l10ncoverage_vocabulary\">\n      <templates>\n        <template mode=\"any\">\n          /directory/directory_layout_template.xhtml\n        </template>\n      </templates>\n      <rows>\n        <row>\n          <widget>parent</widget>\n        </row>\n        <row>\n          <widget>multi_tenant_l10nxvocabulary_id</widget>\n        </row>\n        <row>\n          <widget>multi_tenant_l10nxvocabulary_label_en</widget>\n        </row>\n        <row>\n          <widget>multi_tenant_l10nxvocabulary_label_fr</widget>\n        </row>\n        <row>\n          <widget>multi_tenant_l10nxvocabulary_obsolete</widget>\n        </row>\n        <row>\n          <widget>multi_tenant_l10nxvocabulary_order</widget>\n        </row>\n      </rows>\n      <widget name=\"parent\" type=\"suggestOneDirectory\">\n        <labels>\n          <label mode=\"any\">label.vocabulary.entry.parent</label>\n        </labels>\n        <translated>true</translated>\n        <fields>\n          <field>multitenantl10nxvocabulary:parent</field>\n        </fields>\n        <properties mode=\"any\">\n          <property name=\"directoryName\">l10ncoverage</property>\n          <property name=\"dbl10n\">true</property>\n        </properties>\n        <properties widgetMode=\"edit\">\n          <property name=\"width\">100%</property>\n          <property name=\"minChars\">0</property>\n          <property name=\"hideHelpLabel\">true</property>\n          <property name=\"displayObsoleteEntries\">true</property>\n          <property name=\"canSelectParent\">true</property>\n        </properties>\n      </widget>\n    </layout>\n\n    <layout name=\"multi_tenant_l10nsubjects_vocabulary\">\n      <templates>\n        <template mode=\"any\">\n          /directory/directory_layout_template.xhtml\n        </template>\n      </templates>\n      <rows>\n        <row>\n          <widget>parent</widget>\n        </row>\n        <row>\n          <widget>multi_tenant_l10nxvocabulary_id</widget>\n        </row>\n        <row>\n          <widget>multi_tenant_l10nxvocabulary_label_en</widget>\n        </row>\n        <row>\n          <widget>multi_tenant_l10nxvocabulary_label_fr</widget>\n        </row>\n        <row>\n          <widget>multi_tenant_l10nxvocabulary_obsolete</widget>\n        </row>\n        <row>\n          <widget>multi_tenant_l10nxvocabulary_order</widget>\n        </row>\n      </rows>\n      <widget name=\"parent\" type=\"suggestOneDirectory\">\n        <labels>\n          <label mode=\"any\">label.vocabulary.entry.parent</label>\n        </labels>\n        <translated>true</translated>\n        <fields>\n          <field>multitenantl10nxvocabulary:parent</field>\n        </fields>\n        <properties mode=\"any\">\n          <property name=\"directoryName\">l10nsubjects</property>\n          <property name=\"dbl10n\">true</property>\n        </properties>\n        <properties widgetMode=\"edit\">\n          <property name=\"width\">100%</property>\n          <property name=\"minChars\">0</property>\n          <property name=\"hideHelpLabel\">true</property>\n          <property name=\"displayObsoleteEntries\">true</property>\n          <property name=\"canSelectParent\">true</property>\n        </properties>\n      </widget>\n    </layout>\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.multi.tenant/grp:org.nuxeo.ecm.multi/org.nuxeo.ecm.multi.tenant.jsf/org.nuxeo.ecm.multi.tenant.directoriesUI",
          "name": "org.nuxeo.ecm.multi.tenant.directoriesUI",
          "requirements": [
            "org.nuxeo.ecm.webapp.directory.directoryUI"
          ],
          "resolutionOrder": 720,
          "services": [],
          "startOrder": 247,
          "version": "10.10-HF21",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.multi.tenant.directoriesUI\">\n\n  <require>org.nuxeo.ecm.webapp.directory.directoryUI</require>\n\n  <extension target=\"org.nuxeo.ecm.directory.ui.DirectoryUIManager\"\n    point=\"directories\">\n\n    <directory name=\"topic\" layout=\"multi_tenant_vocabulary\" sortField=\"label\">\n      <deleteConstraint\n        class=\"org.nuxeo.ecm.directory.api.ui.HierarchicalDirectoryUIDeleteConstraint\">\n        <property name=\"targetDirectory\">subtopic</property>\n        <property name=\"targetDirectoryField\">parent</property>\n      </deleteConstraint>\n    </directory>\n    <directory name=\"subtopic\" layout=\"multi_tenant_subtopic_vocabulary\" sortField=\"parent\" />\n\n    <directory name=\"l10ncoverage\" layout=\"multi_tenant_l10ncoverage_vocabulary\"\n      sortField=\"id\">\n      <deleteConstraint\n        class=\"org.nuxeo.ecm.directory.api.ui.HierarchicalDirectoryUIDeleteConstraint\">\n        <property name=\"targetDirectory\">l10ncoverage</property>\n        <property name=\"targetDirectoryField\">parent</property>\n      </deleteConstraint>\n    </directory>\n    <directory name=\"l10nsubjects\" layout=\"multi_tenant_l10nsubjects_vocabulary\"\n      sortField=\"id\">\n      <deleteConstraint\n        class=\"org.nuxeo.ecm.directory.api.ui.HierarchicalDirectoryUIDeleteConstraint\">\n        <property name=\"targetDirectory\">l10nsubjects</property>\n        <property name=\"targetDirectoryField\">parent</property>\n      </deleteConstraint>\n    </directory>\n  </extension>\n\n  <extension target=\"org.nuxeo.ecm.platform.forms.layout.WebLayoutManager\"\n    point=\"widgets\">\n\n    <widget name=\"multi_tenant_vocabulary_id\" type=\"text\">\n      <labels>\n        <label mode=\"any\">label.vocabulary.entry.id</label>\n      </labels>\n      <translated>true</translated>\n      <fields>\n        <field>multitenantvocabulary:id</field>\n      </fields>\n      <widgetModes>\n        <mode value=\"edit\">view</mode>\n      </widgetModes>\n      <properties widgetMode=\"edit\">\n        <property name=\"required\">true</property>\n      </properties>\n    </widget>\n\n    <widget name=\"multi_tenant_vocabulary_label\" type=\"text\">\n      <labels>\n        <label mode=\"any\">label.vocabulary.entry.label</label>\n      </labels>\n      <translated>true</translated>\n      <fields>\n        <field>multitenantvocabulary:label</field>\n      </fields>\n      <properties widgetMode=\"edit\">\n        <property name=\"size\">50</property>\n      </properties>\n    </widget>\n\n    <widget name=\"multi_tenant_vocabulary_obsolete\" type=\"template\">\n      <labels>\n        <label mode=\"any\">label.vocabulary.entry.obsolete</label>\n      </labels>\n      <translated>true</translated>\n      <fields>\n        <field>multitenantvocabulary:obsolete</field>\n      </fields>\n      <properties mode=\"any\">\n        <property name=\"template\">\n          /widgets/integer_yes_no_widget_template.xhtml\n        </property>\n      </properties>\n    </widget>\n\n    <widget name=\"multi_tenant_vocabulary_order\" type=\"int\">\n      <labels>\n        <label mode=\"any\">label.vocabulary.entry.order</label>\n      </labels>\n      <translated>true</translated>\n      <fields>\n        <field>multitenantvocabulary:ordering</field>\n      </fields>\n      <properties widgetMode=\"edit\">\n        <property name=\"size\">10</property>\n      </properties>\n    </widget>\n\n    <widget name=\"multi_tenant_xvocabulary_id\" type=\"text\">\n      <labels>\n        <label mode=\"any\">label.vocabulary.entry.id</label>\n      </labels>\n      <translated>true</translated>\n      <fields>\n        <field>multitenantxvocabulary:id</field>\n      </fields>\n      <widgetModes>\n        <mode value=\"edit\">view</mode>\n      </widgetModes>\n      <properties widgetMode=\"edit\">\n        <property name=\"required\">true</property>\n      </properties>\n    </widget>\n\n    <widget name=\"multi_tenant_xvocabulary_label\" type=\"text\">\n      <labels>\n        <label mode=\"any\">label.vocabulary.entry.label</label>\n      </labels>\n      <translated>true</translated>\n      <fields>\n        <field>multitenantxvocabulary:label</field>\n      </fields>\n      <properties widgetMode=\"edit\">\n        <property name=\"size\">50</property>\n      </properties>\n    </widget>\n\n    <widget name=\"multi_tenant_xvocabulary_obsolete\" type=\"template\">\n      <labels>\n        <label mode=\"any\">label.vocabulary.entry.obsolete</label>\n      </labels>\n      <translated>true</translated>\n      <fields>\n        <field>multitenantxvocabulary:obsolete</field>\n      </fields>\n      <properties mode=\"any\">\n        <property name=\"template\">\n          /widgets/integer_yes_no_widget_template.xhtml\n        </property>\n      </properties>\n    </widget>\n\n    <widget name=\"multi_tenant_xvocabulary_order\" type=\"int\">\n      <labels>\n        <label mode=\"any\">label.vocabulary.entry.order</label>\n      </labels>\n      <translated>true</translated>\n      <fields>\n        <field>multitenantxvocabulary:ordering</field>\n      </fields>\n      <properties widgetMode=\"edit\">\n        <property name=\"size\">10</property>\n      </properties>\n    </widget>\n\n    <widget name=\"multi_tenant_l10nvocabulary_id\" type=\"text\">\n      <labels>\n        <label mode=\"any\">label.vocabulary.entry.id</label>\n      </labels>\n      <translated>true</translated>\n      <fields>\n        <field>multitenantl10nvocabulary:id</field>\n      </fields>\n      continent\n      <widgetModes>\n        <mode value=\"edit\">view</mode>\n      </widgetModes>\n      <properties widgetMode=\"edit\">\n        <property name=\"required\">true</property>\n      </properties>\n    </widget>\n\n    <widget name=\"multi_tenant_l10nvocabulary_label_fr\" type=\"text\">\n      <labels>\n        <label mode=\"any\">label.vocabulary.l10n.entry.label.french</label>\n      </labels>\n      <translated>true</translated>\n      <fields>\n        <field>multitenantl10nvocabulary:label_fr</field>\n      </fields>\n      <properties widgetMode=\"edit\">\n        <property name=\"size\">50</property>\n      </properties>\n    </widget>\n\n    <widget name=\"multi_tenant_l10nvocabulary_label_en\" type=\"text\">\n      <labels>\n        <label mode=\"any\">label.vocabulary.l10n.entry.label.english</label>\n      </labels>\n      <translated>true</translated>\n      <fields>\n        <field>multitenantl10nvocabulary:label_en</field>\n      </fields>\n      <properties widgetMode=\"edit\">\n        <property name=\"size\">50</property>\n      </properties>\n    </widget>\n\n    <widget name=\"multi_tenant_l10nvocabulary_obsolete\" type=\"template\">\n      <labels>\n        <label mode=\"any\">label.vocabulary.entry.obsolete</label>\n      </labels>\n      <translated>true</translated>\n      <fields>\n        <field>multitenantl10nvocabulary:obsolete</field>\n      </fields>\n      <properties mode=\"any\">\n        <property name=\"template\">\n          /widgets/integer_yes_no_widget_template.xhtml\n        </property>\n      </properties>\n    </widget>\n\n    <widget name=\"multi_tenant_l10nvocabulary_order\" type=\"int\">\n      <labels>\n        <label mode=\"any\">label.vocabulary.entry.order</label>\n      </labels>\n      <translated>true</translated>\n      <fields>\n        <field>multitenantl10nvocabulary:ordering</field>\n      </fields>\n      <properties widgetMode=\"edit\">\n        <property name=\"size\">10</property>\n      </properties>\n    </widget>\n\n    <widget name=\"multi_tenant_l10nxvocabulary_id\" type=\"text\">\n      <labels>\n        <label mode=\"any\">label.vocabulary.entry.id</label>\n      </labels>\n      <translated>true</translated>\n      <fields>\n        <field>multitenantl10nxvocabulary:id</field>\n      </fields>\n      <widgetModes>\n        <mode value=\"edit\">view</mode>\n      </widgetModes>\n      <properties widgetMode=\"edit\">\n        <property name=\"required\">true</property>\n      </properties>\n    </widget>\n\n    <widget name=\"multi_tenant_l10nxvocabulary_label_fr\" type=\"text\">\n      <labels>\n        <label mode=\"any\">label.vocabulary.l10n.entry.label.french</label>\n      </labels>\n      <translated>true</translated>\n      <fields>\n        <field>multitenantl10nxvocabulary:label_fr</field>\n      </fields>\n      <properties widgetMode=\"edit\">\n        <property name=\"size\">50</property>\n      </properties>\n    </widget>\n\n    <widget name=\"multi_tenant_l10nxvocabulary_label_en\" type=\"text\">\n      <labels>\n        <label mode=\"any\">label.vocabulary.l10n.entry.label.english</label>\n      </labels>\n      <translated>true</translated>\n      <fields>\n        <field>multitenantl10nxvocabulary:label_en</field>\n      </fields>\n      <properties widgetMode=\"edit\">\n        <property name=\"size\">50</property>\n      </properties>\n    </widget>\n\n    <widget name=\"multi_tenant_l10nxvocabulary_obsolete\" type=\"template\">\n      <labels>\n        <label mode=\"any\">label.vocabulary.entry.obsolete</label>\n      </labels>\n      <translated>true</translated>\n      <fields>\n        <field>multitenantl10nxvocabulary:obsolete</field>\n      </fields>\n      <properties mode=\"any\">\n        <property name=\"template\">\n          /widgets/integer_yes_no_widget_template.xhtml\n        </property>\n      </properties>\n    </widget>\n\n    <widget name=\"multi_tenant_l10nxvocabulary_order\" type=\"int\">\n      <labels>\n        <label mode=\"any\">label.vocabulary.entry.order</label>\n      </labels>\n      <translated>true</translated>\n      <fields>\n        <field>multitenantl10nxvocabulary:ordering</field>\n      </fields>\n      <properties widgetMode=\"edit\">\n        <property name=\"size\">10</property>\n      </properties>\n    </widget>\n  </extension>\n\n  <extension target=\"org.nuxeo.ecm.platform.forms.layout.WebLayoutManager\"\n    point=\"layouts\">\n\n    <layout name=\"multi_tenant_vocabulary\">\n      <templates>\n        <template mode=\"any\">\n          /directory/directory_layout_template.xhtml\n        </template>\n      </templates>\n      <rows>\n        <row>\n          <widget>multi_tenant_vocabulary_id</widget>\n        </row>\n        <row>\n          <widget>multi_tenant_vocabulary_label</widget>\n        </row>\n        <row>\n          <widget>multi_tenant_vocabulary_obsolete</widget>\n        </row>\n        <row>\n          <widget>multi_tenant_vocabulary_order</widget>\n        </row>\n      </rows>\n    </layout>\n\n    <layout name=\"multi_tenant_subtopic_vocabulary\">\n      <templates>\n        <template mode=\"any\">\n          /directory/directory_layout_template.xhtml\n        </template>\n      </templates>\n      <rows>\n        <row>\n          <widget>parent</widget>\n        </row>\n        <row>\n          <widget>multi_tenant_xvocabulary_id</widget>\n        </row>\n        <row>\n          <widget>multi_tenant_xvocabulary_label</widget>\n        </row>\n        <row>\n          <widget>multi_tenant_xvocabulary_obsolete</widget>\n        </row>\n        <row>\n          <widget>multi_tenant_xvocabulary_order</widget>\n        </row>\n      </rows>\n      <widget name=\"parent\" type=\"selectOneDirectory\">\n        <labels>\n          <label mode=\"any\">label.vocabulary.entry.parent</label>\n        </labels>\n        <translated>true</translated>\n        <fields>\n          <field>multitenantxvocabulary:parent</field>\n        </fields>\n        <properties mode=\"any\">\n          <property name=\"directoryName\">topic</property>\n          <property name=\"localize\">true</property>\n        </properties>\n        <properties widgetMode=\"edit\">\n          <property name=\"required\">true</property>\n        </properties>\n      </widget>\n    </layout>\n\n    <layout name=\"multi_tenant_l10ncoverage_vocabulary\">\n      <templates>\n        <template mode=\"any\">\n          /directory/directory_layout_template.xhtml\n        </template>\n      </templates>\n      <rows>\n        <row>\n          <widget>parent</widget>\n        </row>\n        <row>\n          <widget>multi_tenant_l10nxvocabulary_id</widget>\n        </row>\n        <row>\n          <widget>multi_tenant_l10nxvocabulary_label_en</widget>\n        </row>\n        <row>\n          <widget>multi_tenant_l10nxvocabulary_label_fr</widget>\n        </row>\n        <row>\n          <widget>multi_tenant_l10nxvocabulary_obsolete</widget>\n        </row>\n        <row>\n          <widget>multi_tenant_l10nxvocabulary_order</widget>\n        </row>\n      </rows>\n      <widget name=\"parent\" type=\"suggestOneDirectory\">\n        <labels>\n          <label mode=\"any\">label.vocabulary.entry.parent</label>\n        </labels>\n        <translated>true</translated>\n        <fields>\n          <field>multitenantl10nxvocabulary:parent</field>\n        </fields>\n        <properties mode=\"any\">\n          <property name=\"directoryName\">l10ncoverage</property>\n          <property name=\"dbl10n\">true</property>\n        </properties>\n        <properties widgetMode=\"edit\">\n          <property name=\"width\">100%</property>\n          <property name=\"minChars\">0</property>\n          <property name=\"hideHelpLabel\">true</property>\n          <property name=\"displayObsoleteEntries\">true</property>\n          <property name=\"canSelectParent\">true</property>\n        </properties>\n      </widget>\n    </layout>\n\n    <layout name=\"multi_tenant_l10nsubjects_vocabulary\">\n      <templates>\n        <template mode=\"any\">\n          /directory/directory_layout_template.xhtml\n        </template>\n      </templates>\n      <rows>\n        <row>\n          <widget>parent</widget>\n        </row>\n        <row>\n          <widget>multi_tenant_l10nxvocabulary_id</widget>\n        </row>\n        <row>\n          <widget>multi_tenant_l10nxvocabulary_label_en</widget>\n        </row>\n        <row>\n          <widget>multi_tenant_l10nxvocabulary_label_fr</widget>\n        </row>\n        <row>\n          <widget>multi_tenant_l10nxvocabulary_obsolete</widget>\n        </row>\n        <row>\n          <widget>multi_tenant_l10nxvocabulary_order</widget>\n        </row>\n      </rows>\n      <widget name=\"parent\" type=\"suggestOneDirectory\">\n        <labels>\n          <label mode=\"any\">label.vocabulary.entry.parent</label>\n        </labels>\n        <translated>true</translated>\n        <fields>\n          <field>multitenantl10nxvocabulary:parent</field>\n        </fields>\n        <properties mode=\"any\">\n          <property name=\"directoryName\">l10nsubjects</property>\n          <property name=\"dbl10n\">true</property>\n        </properties>\n        <properties widgetMode=\"edit\">\n          <property name=\"width\">100%</property>\n          <property name=\"minChars\">0</property>\n          <property name=\"hideHelpLabel\">true</property>\n          <property name=\"displayObsoleteEntries\">true</property>\n          <property name=\"canSelectParent\">true</property>\n        </properties>\n      </widget>\n    </layout>\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/directories-ui-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.platform.types.TypeService--types",
              "hierarchyPath": "/grp:org.nuxeo.multi.tenant/grp:org.nuxeo.ecm.multi/org.nuxeo.ecm.multi.tenant.jsf/org.nuxeo.ecm.multi.tenant.ui.types/Contributions/org.nuxeo.ecm.multi.tenant.ui.types--types",
              "id": "org.nuxeo.ecm.multi.tenant.ui.types--types",
              "registrationOrder": 10,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.platform.types.TypeService",
                "name": "org.nuxeo.ecm.platform.types.TypeService",
                "type": "service"
              },
              "version": "10.10-HF21",
              "xml": "<extension point=\"types\" target=\"org.nuxeo.ecm.platform.types.TypeService\">\n\n    <type id=\"Domain\">\n      <label>Domain</label>\n      <icon>/icons/domain.gif</icon>\n      <bigIcon>/icons/domain.gif</bigIcon>\n      <category>SuperDocument</category>\n      <description>Domain.description</description>\n      <default-view>view_documents</default-view>\n      <create-view>create_multi_tenant_domain</create-view>\n      <views>\n        <view id=\"user_dashboard\" value=\"user_dashboard\"/>\n        <view id=\"opensocial_dashboard\" value=\"opensocial_dashboard\"/>\n      </views>\n      <subtypes>\n        <type hidden=\"create\">WorkspaceRoot</type>\n        <type hidden=\"create\">SectionRoot</type>\n        <type hidden=\"create\">TemplateRoot</type>\n      </subtypes>\n      <layouts mode=\"any\">\n        <layout>heading</layout>\n      </layouts>\n      <layouts mode=\"create\">\n        <layout>heading</layout>\n      </layouts>\n      <layouts mode=\"edit\">\n        <layout>heading</layout>\n        <layout>dublincore</layout>\n      </layouts>\n      <contentViews category=\"content\">\n        <contentView>document_content</contentView>\n      </contentViews>\n      <contentViews category=\"trash_content\">\n        <contentView showInExportView=\"false\">\n          document_trash_content\n        </contentView>\n      </contentViews>\n    </type>\n\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.multi.tenant/grp:org.nuxeo.ecm.multi/org.nuxeo.ecm.multi.tenant.jsf/org.nuxeo.ecm.multi.tenant.ui.types",
          "name": "org.nuxeo.ecm.multi.tenant.ui.types",
          "requirements": [
            "org.nuxeo.ecm.platform.types"
          ],
          "resolutionOrder": 728,
          "services": [],
          "startOrder": 251,
          "version": "10.10-HF21",
          "xmlFileContent": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<component name=\"org.nuxeo.ecm.multi.tenant.ui.types\">\n\n  <require>org.nuxeo.ecm.platform.types</require>\n\n  <extension target=\"org.nuxeo.ecm.platform.types.TypeService\"\n    point=\"types\">\n\n    <type id=\"Domain\">\n      <label>Domain</label>\n      <icon>/icons/domain.gif</icon>\n      <bigIcon>/icons/domain.gif</bigIcon>\n      <category>SuperDocument</category>\n      <description>Domain.description</description>\n      <default-view>view_documents</default-view>\n      <create-view>create_multi_tenant_domain</create-view>\n      <views>\n        <view id=\"user_dashboard\" value=\"user_dashboard\" />\n        <view id=\"opensocial_dashboard\" value=\"opensocial_dashboard\" />\n      </views>\n      <subtypes>\n        <type hidden=\"create\">WorkspaceRoot</type>\n        <type hidden=\"create\">SectionRoot</type>\n        <type hidden=\"create\">TemplateRoot</type>\n      </subtypes>\n      <layouts mode=\"any\">\n        <layout>heading</layout>\n      </layouts>\n      <layouts mode=\"create\">\n        <layout>heading</layout>\n      </layouts>\n      <layouts mode=\"edit\">\n        <layout>heading</layout>\n        <layout>dublincore</layout>\n      </layouts>\n      <contentViews category=\"content\">\n        <contentView>document_content</contentView>\n      </contentViews>\n      <contentViews category=\"trash_content\">\n        <contentView showInExportView=\"false\">\n          document_trash_content\n        </contentView>\n      </contentViews>\n    </type>\n\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/ui-types-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.core.schema.TypeService--doctype",
              "hierarchyPath": "/grp:org.nuxeo.multi.tenant/grp:org.nuxeo.ecm.multi/org.nuxeo.ecm.multi.tenant.jsf/org.nuxeo.ecm.multi.tenant.doctype.config/Contributions/org.nuxeo.ecm.multi.tenant.doctype.config--doctype",
              "id": "org.nuxeo.ecm.multi.tenant.doctype.config--doctype",
              "registrationOrder": 48,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.core.schema.TypeService",
                "name": "org.nuxeo.ecm.core.schema.TypeService",
                "type": "service"
              },
              "version": "10.10-HF21",
              "xml": "<extension point=\"doctype\" target=\"org.nuxeo.ecm.core.schema.TypeService\">\n    <doctype append=\"true\" name=\"Domain\">\n      <facet name=\"SearchConfiguration\"/>\n      <facet name=\"UITypesLocalConfiguration\"/>\n      <facet name=\"ContentViewLocalConfiguration\"/>\n    </doctype>\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.multi.tenant/grp:org.nuxeo.ecm.multi/org.nuxeo.ecm.multi.tenant.jsf/org.nuxeo.ecm.multi.tenant.doctype.config",
          "name": "org.nuxeo.ecm.multi.tenant.doctype.config",
          "requirements": [
            "org.nuxeo.ecm.platform.types.local.configuration",
            "org.nuxeo.ecm.core.CoreExtensions",
            "org.nuxeo.search.ui.local.configuration",
            "org.nuxeo.ecm.platform.content.view.local.configuration"
          ],
          "resolutionOrder": 870,
          "services": [],
          "startOrder": 248,
          "version": "10.10-HF21",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.multi.tenant.doctype.config\">\n\n  <require>org.nuxeo.ecm.core.CoreExtensions</require>\n  <require>org.nuxeo.ecm.platform.types.local.configuration</require>\n  <require>org.nuxeo.ecm.platform.content.view.local.configuration</require>\n  <require>org.nuxeo.search.ui.local.configuration</require>\n\n  <extension target=\"org.nuxeo.ecm.core.schema.TypeService\"\n    point=\"doctype\">\n    <doctype name=\"Domain\" append=\"true\">\n      <facet name=\"SearchConfiguration\" />\n      <facet name=\"UITypesLocalConfiguration\" />\n      <facet name=\"ContentViewLocalConfiguration\" />\n    </doctype>\n  </extension>\n</component>\n",
          "xmlFileName": "/OSGI-INF/doctypes-config-contrib.xml",
          "xmlPureComponent": true
        }
      ],
      "fileName": "nuxeo-multi-tenant-jsf-10.10-HF21.jar",
      "groupId": "org.nuxeo.multi.tenant",
      "hierarchyPath": "/grp:org.nuxeo.multi.tenant/grp:org.nuxeo.ecm.multi/org.nuxeo.ecm.multi.tenant.jsf",
      "id": "org.nuxeo.ecm.multi.tenant.jsf",
      "location": "",
      "manifest": "Manifest-Version: 1.0\r\nArchiver-Version: Plexus Archiver\r\nCreated-By: Apache Maven\r\nBuilt-By: jenkins\r\nBuild-Jdk: 1.8.0_222\r\nBundle-ManifestVersion: 1\r\nBundle-Version: 0.0.1\r\nBundle-Name: Nuxeo Multi Tenant JSF\r\nBundle-SymbolicName: org.nuxeo.ecm.multi.tenant.jsf;singleton:=true\r\nBundle-Vendor: Nuxeo\r\nNuxeo-Component: OSGI-INF/actions-contrib.xml,OSGI-INF/contentviews-co\r\n ntrib.xml,OSGI-INF/contentviews-es-contrib.xml,OSGI-INF/doctypes-conf\r\n ig-contrib.xml,OSGI-INF/layouts-contrib.xml,OSGI-INF/ui-types-contrib\r\n .xml,OSGI-INF/directories-ui-contrib.xml\r\n\r\n",
      "maxResolutionOrder": 870,
      "minResolutionOrder": 245,
      "packages": [
        "nuxeo-10.10-HF21",
        "nuxeo-multi-tenant"
      ],
      "parentReadme": {
        "blobProviderId": "default",
        "content": "This module provides multi tenant support through Domain and local configuration.\n\n# Building\n\n    mvn clean install\n\n## Deploying\n\nInstall [the Nuxeo Multi Tenant Marketplace Package](https://connect.nuxeo.com/nuxeo/site/marketplace/package/nuxeo-multi-tenant).\nOr manually copy the built artifacts into `$NUXEO_HOME/templates/custom/bundles/` and activate the \"custom\" template.\n\n## QA results\n\n[![Build Status](https://qa.nuxeo.org/jenkins/buildStatus/icon?job=addons_nuxeo-multi-tenant-master)](https://qa.nuxeo.org/jenkins/job/addons_nuxeo-multi-tenant-master/)\n\n# About Nuxeo\n\nNuxeo dramatically improves how content-based applications are built, managed and deployed, making customers more agile, innovative and successful. Nuxeo provides a next generation, enterprise ready platform for building traditional and cutting-edge content oriented applications. Combining a powerful application development environment with SaaS-based tools and a modular architecture, the Nuxeo Platform and Products provide clear business value to some of the most recognizable brands including Verizon, Electronic Arts, Sharp, FICO, the U.S. Navy, and Boeing. Nuxeo is headquartered in New York and Paris. More information is available at www.nuxeo.com.\n",
        "digest": "63651aa5857f2a64d7aae39045f9bf96",
        "encoding": "UTF-8",
        "length": 1242,
        "mimeType": "text/plain",
        "name": "README.md"
      },
      "requirements": [],
      "version": "10.10-HF21"
    }
  ],
  "creationDate": 1664793571025,
  "key": "Nuxeo Platform LTS 2019-10.10",
  "name": "Nuxeo Platform LTS 2019",
  "operations": [],
  "packages": [
    {
      "@type": "NXPackage",
      "bundles": [
        "org.nuxeo.ecm.multi.tenant",
        "org.nuxeo.ecm.multi.tenant.jsf"
      ],
      "conflicts": [],
      "dependencies": [],
      "hierarchyPath": "/nuxeo-multi-tenant-1.8.3",
      "id": "nuxeo-multi-tenant-1.8.3",
      "name": "nuxeo-multi-tenant",
      "optionalDependencies": [
        "nuxeo-jsf-ui"
      ],
      "packageType": "addon",
      "title": "Nuxeo Multi Tenant",
      "version": "1.8.3"
    }
  ],
  "pluginSnapshots": {},
  "releaseDate": 1547942400000,
  "version": "10.10"
}